Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
results= 'markup'
)
## -----------------------------------------------------------------------------
library(RestRserve)
allowed_access = list(
"user-1" = "password-1",
"user-2" = "password-2"
)
auth_fun = function(user, password) {
res = FALSE
try({
res = identical(allowed_access[[user]], password)
}, silent = TRUE)
return(res)
}
## -----------------------------------------------------------------------------
basic_auth_backend = AuthBackendBasic$new(FUN = auth_fun)
## -----------------------------------------------------------------------------
auth_mw = AuthMiddleware$new(
auth_backend = basic_auth_backend,
routes = "/secure/factorial",
id = "auth_middleware"
)
app = Application$new(middleware = list(auth_mw))
## -----------------------------------------------------------------------------
factorial_handler = function(.req, .res) {
x = .req$get_param_query("x")
x = as.integer(x)
.res$set_body(factorial(x))
}
app$add_get("/factorial", factorial_handler)
app$add_get("/secure/factorial", factorial_handler)
## -----------------------------------------------------------------------------
req = Request$new(path = "/factorial", parameters_query = list(x = "5"))
res = app$process_request(req)
res$body
## -----------------------------------------------------------------------------
req = Request$new(path = "/secure/factorial", parameters_query = list(x = "5"))
res = app$process_request(req)
res$body
## -----------------------------------------------------------------------------
credentials = jsonlite::base64_enc("user-1:password-1")
headers = list("Authorization" = sprintf("Basic %s", credentials))
req = Request$new(
path = "/secure/factorial",
parameters_query = list(x = "5"),
headers = headers
)
res = app$process_request(req)
res$body
## -----------------------------------------------------------------------------
credentials = jsonlite::base64_enc("user-1:password-2")
headers = list("Authorization" = sprintf("Basic %s", credentials))
req = Request$new(
path = "/secure/factorial",
parameters_query = list(x = "5"),
headers = headers
)
res = app$process_request(req)
res$body
## -----------------------------------------------------------------------------
allowed_tokens = c(
"super_secure_token_1",
"super_secure_token_2"
)
auth_fun = function(token) {
res = FALSE
try({
res = token %in% allowed_tokens
}, silent = TRUE)
return(res)
}
basic_auth_backend = AuthBackendBearer$new(FUN = auth_fun)
## -----------------------------------------------------------------------------
auth_mw = AuthMiddleware$new(
auth_backend = basic_auth_backend,
routes = "/secure/",
match = "partial",
id = "auth_middleware"
)
app = Application$new(middleware = list(auth_mw))
## -----------------------------------------------------------------------------
app$add_get("/hello0", function(req, res) {res$body = "OK"})
app$add_get("/secure/hello1", function(req, res) {res$body = "OK"})
app$add_get("/secure/hello2", function(req, res) {res$body = "OK"})
## -----------------------------------------------------------------------------
headers = list("Authorization" = "Bearer super_secure_token_1")
req = Request$new(
path = "/secure/hello1",
headers = headers
)
res = app$process_request(req)
res$body
## -----------------------------------------------------------------------------
headers = list("Authorization" = "Bearer abcd")
req = Request$new(
path = "/secure/hello2",
headers = headers
)
res = app$process_request(req)
res$body
## -----------------------------------------------------------------------------
req = Request$new(path = "/hello0")
res = app$process_request(req)
res$body
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.