gpt4 book ai didi

azure - 从 Azure AD 中获取用户的 token 主题标识符 (sub)

转载 作者:行者123 更新时间:2023-12-04 18:37:19 28 4
gpt4 key购买 nike

我的网络应用程序正在使用多个 OAuth 2.0 身份提供商,并且希望从访问 token 响应的 id_token 中检索“sub”并将其与存储在我的应用程序数据库中的身份提供商进行匹配,因为“sub”是用户所在系统中的唯一 ID,它是 id_token 中的一个固定字段。

我的问题是:是否有一种明显/方便的方法可以从 Azure AD 门户中检索用户的 token 主题标识符(又名sub)?我知道“对象 ID”(又名对象标识符oid)是 Azure AD 门户上用户配置文件的一部分。但是,“oid”不是 JWT id_token 中的标准字段(例如 Azure AD 使用它,但 Google Identity 不使用),但“sub”是。

最佳答案

从 Azure 管理门户,您只能看到 Active Directory 中用户的对象 ID。

enter image description here

但在 C# 代码中,如果您拥有该用户的 JWT token ,您可以像下面一样对其进行解码,并从中获取您想要的任何属性:

var token = new JwtSecurityToken(jwtToken);
var oid = token.Claims.FirstOrDefault(m=>m.Type == "oid").Value;
var sub = token.Claims.FirstOrDefault(m => m.Type == "sub").Value;

但是,如果您没有用户用户名密码,则无法从 AAD 获取他们的 JWT token 。

或者,您可以使用 AAD Graph API 从 AAD 获取更详细的用户信息,但即使是 Azure Graph API 响应中也不会包含“SUB”,而只有对象 ID:

https://msdn.microsoft.com/en-us/library/azure/dn151678.aspx

以下是使用 AAD Graph 的 GET Users 调用的响应:

{
"odata.metadata": "https://graph.windows.net/contoso.onmicrosoft.com/$metadata#directoryObjects/Microsoft.WindowsAzure.ActiveDirectory.User/@Element",
"odata.type": "Microsoft.WindowsAzure.ActiveDirectory.User",
"objectType": "User",
"objectId": "4e971521-101a-4311-94f4-0917d7218b4e",
"accountEnabled": true,
"assignedLicenses": [],
"assignedPlans": [],
"city": null,
"country": null,
"department": null,
"dirSyncEnabled": null,
"displayName": "Alex Wu",
"facsimileTelephoneNumber": null,
"givenName": null,
"jobTitle": null,
"lastDirSyncTime": null,
"mail": null,
"mailNickname": "AlexW",
"mobile": null,
"otherMails": [],
"passwordPolicies": null,
"passwordProfile": null,
"physicalDeliveryOfficeName": null,
"postalCode": null,
"preferredLanguage": null,
"provisionedPlans": [],
"provisioningErrors": [],
"proxyAddresses": [],
"state": null,
"streetAddress": null,
"surname": null,
"telephoneNumber": null,
"usageLocation": null,
"userPrincipalName": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="01406d647941626e6f756e726e2f6e6f6c6862736e726e67752f626e6c" rel="noreferrer noopener nofollow">[email protected]</a>"
}

关于azure - 从 Azure AD 中获取用户的 token 主题标识符 (sub),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510679/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com