1

我是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 身份验证获得的访问令牌是否与开放式身份验证不同?有解决办法吗?

任何帮助都非常感谢。

提前致谢。

4

1 回答 1

0

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

更具体到您的情况.. 如果访问令牌是使用您在问题中提到的 Auth 代码授予流程并使用正确的参数获取的,它应该适用于您的 API。

要检查的两件事

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

    这是一个使用 openid 范围的访问令牌的示例请求。获取访问令牌

    的值resource应该与您的 Web 服务完全匹配App ID URI。要查找 App 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 令牌和访问令牌,请确保使用正确的令牌

于 2019-03-19T16:33:21.143 回答