使用本教程作为指南:https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi
在 web api 中,我们需要获取用户的详细信息(出于审计目的,我们希望将用户的详细信息记录在数据库中)。
在web api中,有没有办法解码azure token以获取用户详细信息?或者我们可以简单地在每个请求中从客户端浏览器传递用户电子邮件也是可行的(使用 Angular 的 MSAL 库可以轻松访问)
答案 0 :(得分:1)
与尝试解码令牌以获取当前用户的电子邮件不同,基本控制器按照此处的详细说明公开当前用户;
https://docs.microsoft.com/en-us/aspnet/core/migration/claimsprincipal-current?view=aspnetcore-2.1
因此只需使用以下内容,我就可以获得与当前请求关联的用户;
string email = User.FindFirstValue(ClaimTypes.Email);
答案 1 :(得分:0)
您可以解码令牌以获取登录用户的一些信息,例如用户名和电子邮件,请使用 https://jwt.io/ 尝试令牌。
如果您想了解更多详细信息,可以使用 MS Graph。 Me
表示当前登录用户。尝试使用以下 Graph SDK 或 HttpClient sample。
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
// or graphClient.Users[user-object-id].Request().GetAsync(); for a specific user
var user = await graphClient.Me
.Request()
.GetAsync();