gpt4 book ai didi

asp.net - Azure AD 不记名 token - 获取用户标识符

转载 作者:行者123 更新时间:2023-12-05 06:31:31 26 4
gpt4 key购买 nike

我有一个使用 AzureADBearer 身份验证方法保护的 ASP.NET Core API。

按照我们在这里的例子:https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore

使用此方法通过 ADAL.net 生成的不记名 token 可保护对 API 的调用。

    private async Task<string> getToken()
{
AuthenticationResult result = null;
string userObjectID = (User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier"))?.Value;

// Using ADAL.Net, get a bearer token to access the TodoListService
AuthenticationContext authContext = new AuthenticationContext(AzureAdOptions.Settings.Authority, new NaiveSessionCache(userObjectID, HttpContext.Session));
ClientCredential credential = new ClientCredential(AzureAdOptions.Settings.ClientId, AzureAdOptions.Settings.ClientSecret);

result = await authContext.AcquireTokenAsync(AzureAdOptions.Settings.TodoListResourceId, credential);


return result.AccessToken;
}

但是,当我查看 API 收到的声明时...没有显示为用户唯一的标识符。 Nameidentifier 声明对于我为其生成 token 的每个用户都是相同的。

在上述代码中生成的 objectid - 是 token 生成中唯一独特的方面,并且在 token 的 API 解构中表示的声明中似乎无关紧要。

关于如何通过 API 获取任何类型的用户唯一 ID 有什么想法吗?这可能是电子邮件,SID 任何我可以使用的东西..

最佳答案

AccessToken 上有一个声明,其 key 写为 oidObject ID。它是一个不可变的 GUID,可将用户唯一标识为 Azure 对象。

查看此已解码的 JSON Web token 示例,它是 Azure AD单页应用程序 生成的隐式授权流使用 MSAL.js

Note: Some items were omitted and changed for privacy reasons.

{
"aud": "<app registration guid>"
"iss": "https://login.microsoftonline.com/<tenant id>/v2.0",
"iat": 1606857684,
"nbf": 1606857684,
"exp": 1606861584,
"name": "developer",
"oid": "<Object ID>",
"preferred_username": "dev@foo.bar",
"sub": "RePapB10ksij8FA7dv-GdO9u4tz0_Hm4mmSeuGcqByY",
"tid": "<tenant id>"
"ver": "2.0"
}

关于asp.net - Azure AD 不记名 token - 获取用户标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51813036/

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