ADAL.net的访问令牌与openid是否不同

时间:2019-03-19 00:55:27

标签: azure-active-directory openid adal send-on-behalf-of

我是openid和aad的新手。

我有一个调用下游Graph api的API。 我遵循以下示例 https://joonasw.net/view/azure-ad-on-behalf-of-aspnet-core

一切正常。

但是前端是第三方应用程序,可以访问我的API。

他们说他们正在使用打开的连接来验证用户身份。他们遵循Auth授权流程(https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code),所以我希望那时有一个JWT访问令牌。 但是,当我尝试使用他们的访问令牌时,它表示未经授权。 我尝试使用jwt.ms解码他们的访问令牌,但这也不起作用。

现在我的问题是,从ADAL.net身份验证获得的访问令牌是否与打开的身份验证不同? 有解决方法吗?

任何帮助都很感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

澄清您的理论问题。.ADAL.NET库可以帮助您从Azure AD获取令牌,这些令牌符合OAuth 2.0和OpenID连接协议。

更具体地针对您的情况..如果访问令牌是使用您所提及的Auth代码授予流程并使用正确的参数获取的,则它应适用于您的API。

要检查的两件事

  1. 确保已获取访问令牌,并将您的API指定为资源,然后才对您的API有效。

    这是访问令牌的示例请求,该请求也使用openid范围。.Get Access Tokens

    对于您的Web服务,resource的值应与App ID URI完全匹配。要找到应用程序ID URI,请在Azure门户中,依次单击“ Azure Active Directory”,“应用程序注册”,打开应用程序的“设置”页面,然后单击“属性”。

    GET https://login.microsoftonline.com/{tenant}/oauth2/authorize?
    client_id=6731de76-14a6-49ae-97bc-6eba6914391e        // Your registered Application Id
    &response_type=id_token+code
    &redirect_uri=http%3A%2F%2Flocalhost%3a12345          // Your registered Redirect                 Uri, url encoded
    &response_mode=form_post                              // `form_post' or 'fragment'
    &scope=openid
    &resource=https%3A%2F%2Fservice.contoso.com%2F        // The identifier of the protected resource (web API) that your application needs access to
    &state=12345                                          // Any value, provided by your app
    &nonce=678910                                         // Any value, provided by your app
    
  2. 您可能正在获取ID令牌和Access令牌,请确保使用正确的令牌