azure - 如何根据access_token获取id_token

标签 azure active-directory azure-active-directory

我们的前端正在登录用户并检索 token 。

我们的中间层是一个 REST-API 应用程序,它将消耗 token 。 通过简单地使用

解码 token
 JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
            JwtSecurityToken jwt = (JwtSecurityToken)tokenHandler.ReadToken(ssToken);

我们没有获得登录用户的正确对象标识符。 我们也没有姓名、电子邮件地址等声明,因此我认为这是我们获得的 access_token。

只有access_token时如何获取正确的id_token?

请注意,我们使用的是带有 C# 的第 3 方应用程序,因此我们不是 WEB-API,只是一个简单的类库

最佳答案

请尝试以下操作:

                System.IdentityModel.Tokens.JwtSecurityToken token = new System.IdentityModel.Tokens.JwtSecurityToken(id_token);
                var claims = token.Claims;
                var userId = claims.FirstOrDefault(c => c.Type == "oid").Value;

我刚刚在我的项目中尝试过,并且能够在声明中获取用户 ID。我的登录 URL 如下所示:

https://login.windows.net/[Azure AD Tenant Id]/oauth2/authorize?response_mode=form_post&response_type=id_token&scope=openid+profile&client_id=[Client ID]&resource=https%3A%2F%2Fgraph.windows.net&redirect_uri=[Redirect Uri]&state=[User State]&nonce=[Some Random nonce]

关于azure - 如何根据access_token获取id_token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29364068/

相关文章:

azure - 配置 Azure 域服务时无法 PING 注册的域名

azure - 为什么 azure-active-directory-spring-boot-starter 需要访问 Microsoft?

electron - 从 Electron 应用程序获取 Azure Active Directory token

c# - Azure ASP.NET WebAPI 性能

azure - “Microsoft.Compute”Azure 资源提供程序永远无法完成 'Registering' :

c# - 从公司身份验证获取 Azure 帐户 key

azure - 我可以使用 Azure Active Directory 进行测试吗

email - 我应该使用 GRAPH API 还是简单的 SMTP 类来创建电子邮件?

azure - 如何将 AKS 群集连接到 Azure 托管的 postgresql,无需通过 Internet 进行路由

python - 从 Amazon S3 迁移到 Azure 存储(Django Web 应用程序)