我有一个客户端应用程序和 Web API 应用程序托管在不同的域上,并且希望在客户端应用程序中利用 ADAL.js 登录我的 Web API 应用程序,但仍然收到未经授权的错误。
在 web api web.config 中,我指定了我的 AAD 详细信息:
<add key="ida:AudienceUri" value="http://clientappurl/" />
<add key="ida:FederationMetadataLocation" value="https://login.windows.net/...3596365/federationmetadata/2007-06/federationmetadata.xml" />
<add key="ida:ClientId" value=".....388ffcc3" />
<add key="ida:ClientSecret" value="....gBsD7o=" />
<add key="ida:Tenant" value="........onmicrosoft.com" />
<add key="ida:TenantId" value="........96365" />
<add key="ida:Auth" value="https://login.windows.net/" />
<add key="ida:GraphUrl" value="https://graph.windows.net" />
并更新了 Startup.Auth.cs,内容如下:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = "http://myclientapp",
Tenant = "developertenant.onmicrosoft.com",
AuthenticationType = "OAuth2Bearer",
});
在客户端上,我指定了端点(我的 api url)、租户和 clientId。 ADALjs 将用户重定向到 Microsoft 登录页面,看起来成功登录后会将一些数据写入本地存储。但API应用程序仍然响应未经授权的错误。
是否有关于如何正确配置托管在不同域上的 wep api 和客户端应用程序以利用 AAD 的教程?
如何从我的 Web API 应用中读取授权用户详细信息(例如 AAD 用户组)?
最佳答案
以下示例展示了如何从 Web 应用程序读取 AAD 组声明: https://github.com/Azure-Samples/active-directory-dotnet-webapp-groupclaims
获得 token 后,您就可以调用 Web API,如以下示例所示: https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect
这里有一个很好的 AAD 示例列表: https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/
关于azure - Web API 项目的 ADAL js 和 Azure AD 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34906563/