зеркало из https://github.com/Azure/AzureKusto.git
Support common tenant (#38)
* support common tenant * document * update readme * add missing ... arg
This commit is contained in:
Родитель
f39e67004f
Коммит
2a762ef12b
|
@ -195,7 +195,7 @@ find_endpoint_token <- function(properties, .query_token)
|
||||||
auth_type <- "client_credentials"
|
auth_type <- "client_credentials"
|
||||||
}
|
}
|
||||||
|
|
||||||
return(AzureRMR::get_azure_token(properties$server, tenant=properties$tenantid,
|
return(get_kusto_token(properties$server, tenant=properties$tenantid,
|
||||||
app=properties$appclientid, password=token_pwd, username=token_user, auth_type=auth_type))
|
app=properties$appclientid, password=token_pwd, username=token_user, auth_type=auth_type))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,13 @@
|
||||||
#' @seealso
|
#' @seealso
|
||||||
#' [kusto_database_endpoint], [AzureAuth::get_azure_token]
|
#' [kusto_database_endpoint], [AzureAuth::get_azure_token]
|
||||||
#' @export
|
#' @export
|
||||||
get_kusto_token <- function(server=NULL, clustername, location=NULL, tenant, app=.kusto_app_id, auth_type=NULL, ...)
|
get_kusto_token <- function(server=NULL, clustername, location=NULL, tenant=NULL, app=.kusto_app_id, auth_type=NULL,
|
||||||
|
...)
|
||||||
{
|
{
|
||||||
tenant <- AzureAuth::normalize_tenant(tenant)
|
tenant <- if(is.null(tenant))
|
||||||
|
"common"
|
||||||
|
else AzureAuth::normalize_tenant(tenant)
|
||||||
|
|
||||||
if(is.null(server))
|
if(is.null(server))
|
||||||
{
|
{
|
||||||
location <- normalize_location(location)
|
location <- normalize_location(location)
|
||||||
|
@ -45,14 +49,17 @@ get_kusto_token <- function(server=NULL, clustername, location=NULL, tenant, app
|
||||||
|
|
||||||
#' @rdname get_kusto_token
|
#' @rdname get_kusto_token
|
||||||
#' @export
|
#' @export
|
||||||
delete_kusto_token <- function(server=NULL, clustername, location=NULL, tenant, app=.kusto_app_id, auth_type=NULL,
|
delete_kusto_token <- function(server=NULL, clustername, location=NULL, tenant=NULL, app=.kusto_app_id, auth_type=NULL,
|
||||||
..., hash=NULL, confirm=TRUE)
|
..., hash=NULL, confirm=TRUE)
|
||||||
{
|
{
|
||||||
# use hash if provided
|
# use hash if provided
|
||||||
if(!is.null(hash))
|
if(!is.null(hash))
|
||||||
return(AzureAuth::delete_azure_token(hash=hash, confirm=confirm))
|
return(AzureAuth::delete_azure_token(hash=hash, confirm=confirm))
|
||||||
|
|
||||||
tenant <- AzureAuth::normalize_tenant(tenant)
|
tenant <- if(is.null(tenant))
|
||||||
|
"common"
|
||||||
|
else AzureAuth::normalize_tenant(tenant)
|
||||||
|
|
||||||
if(is.null(server))
|
if(is.null(server))
|
||||||
{
|
{
|
||||||
location <- normalize_location(location)
|
location <- normalize_location(location)
|
||||||
|
@ -64,7 +71,7 @@ delete_kusto_token <- function(server=NULL, clustername, location=NULL, tenant,
|
||||||
if(is.null(auth_type) && app == .kusto_app_id && (!"username" %in% names(list(...))))
|
if(is.null(auth_type) && app == .kusto_app_id && (!"username" %in% names(list(...))))
|
||||||
auth_type <- "device_code"
|
auth_type <- "device_code"
|
||||||
|
|
||||||
AzureAuth::delete_azure_token(server, tenant, app, auth_type=auth_type, confirm=confirm)
|
AzureAuth::delete_azure_token(server, tenant, app, auth_type=auth_type, confirm=confirm, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,15 +10,13 @@ You can install the development version from GitHub, via `devtools::install_gith
|
||||||
|
|
||||||
### Kusto Endpoint Interface
|
### Kusto Endpoint Interface
|
||||||
|
|
||||||
Connect to a Kusto cluster by instantiating a `kusto_database_endpoint` object with the cluster URI, database name, and an `AzureRMR::AzureToken` object, which you can obtain via the `get_kusto_token` helper function.
|
Connect to a Kusto cluster by instantiating a `kusto_database_endpoint` object with the cluster URI and database name.
|
||||||
|
|
||||||
```r
|
```r
|
||||||
|
|
||||||
library(AzureKusto)
|
library(AzureKusto)
|
||||||
|
|
||||||
Samples <- kusto_database_endpoint(server="https://help.kusto.windows.net",
|
Samples <- kusto_database_endpoint(server="https://help.kusto.windows.net", database="Samples")
|
||||||
database="Samples",
|
|
||||||
.query_token=get_kusto_token(clustername="help", tenant="microsoft"))
|
|
||||||
|
|
||||||
# To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code FPD8GZPY9 to authenticate.
|
# To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code FPD8GZPY9 to authenticate.
|
||||||
# Waiting for device code in browser...
|
# Waiting for device code in browser...
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
\alias{list_kusto_tokens}
|
\alias{list_kusto_tokens}
|
||||||
\title{Manage AAD authentication tokens for Kusto clusters}
|
\title{Manage AAD authentication tokens for Kusto clusters}
|
||||||
\usage{
|
\usage{
|
||||||
get_kusto_token(server = NULL, clustername, location = NULL, tenant,
|
get_kusto_token(server = NULL, clustername, location = NULL,
|
||||||
app = .kusto_app_id, auth_type = NULL, ...)
|
tenant = NULL, app = .kusto_app_id, auth_type = NULL, ...)
|
||||||
|
|
||||||
delete_kusto_token(server = NULL, clustername, location = NULL, tenant,
|
delete_kusto_token(server = NULL, clustername, location = NULL,
|
||||||
app = .kusto_app_id, auth_type = NULL, ..., hash = NULL,
|
tenant = NULL, app = .kusto_app_id, auth_type = NULL, ...,
|
||||||
confirm = TRUE)
|
hash = NULL, confirm = TRUE)
|
||||||
|
|
||||||
list_kusto_tokens()
|
list_kusto_tokens()
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,3 +85,14 @@ test_that("Obtaining token from own app works",
|
||||||
expect_identical(tok1$hash(), tok2$hash())
|
expect_identical(tok1$hash(), tok2$hash())
|
||||||
expect_identical(tok1$hash(), tok2$hash())
|
expect_identical(tok1$hash(), tok2$hash())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
# should get one devicecode prompt here
|
||||||
|
test_that("Obtaining token for common tenant works",
|
||||||
|
{
|
||||||
|
srvuri <- sprintf("https://%s.%s.kusto.windows.net", srvname, srvloc)
|
||||||
|
tok <- get_kusto_token(srvuri)
|
||||||
|
expect_true(AzureAuth::is_azure_token(tok))
|
||||||
|
})
|
||||||
|
|
||||||
|
Sys.unsetenv("AZ_TEST_KUSTO_TOKEN_HASH")
|
||||||
|
|
|
@ -20,6 +20,7 @@ server <- sprintf("https://%s.%s.kusto.windows.net", srvname, srvloc)
|
||||||
db <- kusto_database_endpoint(server=server, database=dbname, tenantid=tenant)
|
db <- kusto_database_endpoint(server=server, database=dbname, tenantid=tenant)
|
||||||
db2 <- kusto_database_endpoint(server=server, database=dbname, tenantid=tenant,
|
db2 <- kusto_database_endpoint(server=server, database=dbname, tenantid=tenant,
|
||||||
appclientid=app, appkey=password)
|
appclientid=app, appkey=password)
|
||||||
|
db3 <- kusto_database_endpoint(server=server, database=dbname)
|
||||||
|
|
||||||
test_that("Queries work",
|
test_that("Queries work",
|
||||||
{
|
{
|
||||||
|
@ -60,3 +61,23 @@ test_that("Commands work with own app",
|
||||||
dberr$token <- NULL
|
dberr$token <- NULL
|
||||||
expect_error(run_query(dberr, ".show cluster"))
|
expect_error(run_query(dberr, ".show cluster"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test_that("Queries work with common tenant",
|
||||||
|
{
|
||||||
|
out <- run_query(db3, "iris | summarize count() by species")
|
||||||
|
expect_is(out, "data.frame")
|
||||||
|
|
||||||
|
dberr <- db3
|
||||||
|
dberr$token <- NULL
|
||||||
|
expect_error(run_query(dberr, "iris | summarize count() by species"))
|
||||||
|
})
|
||||||
|
|
||||||
|
test_that("Commands work with common tenant",
|
||||||
|
{
|
||||||
|
out <- run_query(db3, ".show cluster")
|
||||||
|
expect_is(out, "data.frame")
|
||||||
|
|
||||||
|
dberr <- db3
|
||||||
|
dberr$token <- NULL
|
||||||
|
expect_error(run_query(dberr, ".show cluster"))
|
||||||
|
})
|
||||||
|
|
Загрузка…
Ссылка в новой задаче