A simple interface to the Microsoft Graph API. The companion package to AzureRMR and AzureAuth.
Microsoft Graph is a comprehensive framework for accessing data in various online Microsoft services. Currently, this package aims to provide an R interface only to the Azure Active Directory part, with a view to supporting interoperability of R and Azure: users, groups, registered apps and service principals. Like AzureRMR, it could potentially be extended to cover other services.
The primary repo for this package is at
https://github.com/Azure/AzureGraph; please submit issues and PRs there.
It is also mirrored at the Cloudyr org at
https://github.com/cloudyr/AzureGraph. You can install the development
version of the package with
devtools::install_github("Azure/AzureGraph")
.
The first time you authenticate with a given Azure Active Directory
tenant, you call create_graph_login()
and supply your
credentials. R will prompt you for permission to create a special data
directory in which to save the obtained authentication token and AD
Graph login. Once this information is saved on your machine, it can be
retrieved in subsequent R sessions with get_graph_login()
.
Your credentials will be automatically refreshed so you don’t have to
reauthenticate.
See the “Authentication basics” vignette for more details on how to authenticate with AzureGraph.
AzureGraph currently includes methods for working with registered
apps, service principals, users and groups. A
call_graph_endpoint()
method is also supplied for making
arbitrary REST calls.
library(AzureGraph)
# authenticate with AAD
# - on first login, call create_graph_login()
# - on subsequent logins, call get_graph_login()
<- create_graph_login()
gr
# list all users in this tenant
$list_users()
gr
# list all app registrations
$list_apps()
gr
# my user information
<- gr$get_user("me")
me
# my groups
head(me$list_group_memberships())
# my registered apps
$list_owned_objects(type="application")
me
# register a new app
# by default, this will have a randomly generated strong password with duration 2 years
<- gr$create_app("AzureR_newapp")
app
# get the associated service principal
$get_service_principal()
app
# using it in conjunction with AzureRMR RBAC
::get_azure_login()$
AzureRMRget_subscription("sub_id")$
get_resource_group("rgname")$
add_role_assignment(app, "Contributor")