Azure active directory 如何使用Microsoft Graph API从用户配置文件中获取组织(租户)id
我正在创建一个使用组织许可证销售的附加模块 我已经在外接程序上实现了身份验证方案。我目前正在请求Azure active directory 如何使用Microsoft Graph API从用户配置文件中获取组织(租户)id,azure-active-directory,microsoft-graph-api,office-js,Azure Active Directory,Microsoft Graph Api,Office Js,我正在创建一个使用组织许可证销售的附加模块 我已经在外接程序上实现了身份验证方案。我目前正在请求用户。请阅读范围以确保使用Azure v2端点进行身份验证。要获取用户的信息,我正在查询 https://graph.microsoft.com/v1.0/me 为了正确测试用户的许可证,我需要提取用户组织的标识。然而,我从Grah请求中收到的用户信息是越来越少的。对于AAD帐户,架构如下所示: { "@odata.context": "https://graph.microsoft.com/v
用户。请阅读范围以确保使用Azure v2端点进行身份验证。要获取用户的信息,我正在查询
https://graph.microsoft.com/v1.0/me
为了正确测试用户的许可证,我需要提取用户组织的标识。然而,我从Grah请求中收到的用户信息是越来越少的。对于AAD帐户,架构如下所示:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
businessPhones: [],
displayName: "FirstName LastName",
givenName: "FirstName",
id: "unique-id",
jobTitle: null,
mail: "First.LastName@COMPANYDOMAIN.COM",
mobilePhone: null,
officeLocation: null,
preferredLanguage: null,
surname: "LastName",
userPrincipalName: "FILastName@COMPANYDOMAIN.COM"
}
如果我使用
https://graph.microsoft.com/BETA/me
我得到了更多的信息,但没有什么能帮助我在用户的组织上确定唯一的id
我是否需要使用不同的范围来获取用户组织的信息?如果没有,我可以依靠解析用户电子邮件中的域名作为用户组织的唯一id吗?我需要查询不同的API吗
更新:OAuth响应
如果有帮助,在用户使用AD进行身份验证后,我将收到以下响应:
{
access_token: "eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFEWDhHQ2k2SnM2U0s4MlRzRDJQYjdyN1VLTzdJSDJSLWpTcmpScU9..."
expires_at: Fri May 18 2018 07: 18: 42 GMT - 0400(Eastern Daylight Time) {}
expires_in: "3599"
provider: "Microsoft"
scope: "https://graph.microsoft.com/User.Read"
session_state: "012f4565-31bb-..."
state: "259309..."
token_type: "Bearer"
}
更新:使用https://graph.microsoft.com/BETA/me
更新:使用jwt.ms解码访问\u令牌
如果没有其他办法,您可以解码访问令牌并获得tid
声明。这是Azure AD租户的id
您可以在此处找到令牌中声明的文档:
例如,下面是它对tid
的说明:
一个不可变的、不可重用的标识符,用于标识发出令牌的目录租户。您可以使用此值访问多租户应用程序中特定于租户的目录资源。例如,您可以使用此值在对Graph API的调用中标识租户
现在,这可能不是直接使用graph API,而是使获取组织的租户id变得非常简单。只需访问“{yourdomainname}/.well-known/openid配置”。返回的结构将具有租户id。例如,在浏览器中尝试此url:。这似乎可行
GET https://graph.microsoft.com/v1.0/organization
id属性是租户id
用户登录后,您应该获得一个Id令牌。包含租户Id的。@juunas您是指访问\u令牌
?如何从中提取租户id?也许你想发布一个包含详细信息的完整答案?我是说id_令牌,在这种情况下它对你不可用吗?@juunas我用OAuth负载更新了答案。现在可以看到完整工作流的模式。广告用户确实有一个较长的配置文件,但没有租户id
,我可以看到,如果你在那里解码访问令牌,你会在那里看到用户信息吗?非常适合首先请求域,检查它,最后请求管理员授权。否则,我将不得不对我的守护程序应用程序进行两次身份验证(另请参见)。这很有效,请注意共享您使用的请求主体的文档。这是一个GET请求。没有尸体。将更新答案
{
"typ": "",
"nonce": "",
"alg": "",
"x5t": "",
"kid": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk"
}.{
"aud": "",
"iss": "",
"iat": "",
"nbf": "",
"exp": "",
"acr": "",
"aio": "",
"amr": [
"pwd"
],
"app_displayname": "",
"appid": "",
"appidacr": "",
"family_name": "",
"given_name": "",
"ipaddr": "",
"name": "",
"oid": "",
"onprem_sid": "",
"platf": "",
"puid": "",
"scp": "",
"sub": "",
"tid": "",
"unique_name": "",
"upn": "",
"uti": "",
"ver": "1.0"
}.[Signature]
GET https://graph.microsoft.com/v1.0/organization