如何根据access_token获取id_token

时间:2015-03-31 08:31:26

标签: azure active-directory azure-active-directory

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

我们的中间层是一个REST-API应用程序,它将使用令牌。 只需用

解码令牌即可
 JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
            JwtSecurityToken jwt = (JwtSecurityToken)tokenHandler.ReadToken(ssToken);

我们没有获得登录用户的正确objectidentifier。 我们也没有像姓名,电子邮件地址这样的声明,所以我认为它是我们得到的access_token。

如果只有access_token?

,我们如何检索正确的id_token?

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

1 个答案:

答案 0 :(得分:1)

请尝试以下内容:

                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]