azure - Web API 项目的 ADAL js 和 Azure AD 身份验证

标签 azure authorization asp.net-web-api2 azure-active-directory adal

我有一个客户端应用程序和 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/

相关文章:

Java web应用认证-账户设计

c# - 修改 Http Status Code 文本

logging - AS.NET WEB API全局异常处理程序无法访问请求内容

json - 执行 WebAPI 2 JSON Post 时未找到 HttpRequestBase.GetBufferedInputStream

azure - 我应该在 test_configurations.json 中填充哪些字段?

azure - Blob 存储中的空图像

python - 删除 sudo 来运行 python 脚本

.net - 如何防止用户使用 dotnet core 和 RESTful API 访问其他用户的数据?

database - Azure 流分析输出到 Azure Cosmos DB

c# - 从 "WindowsAzure.Storage"迁移时,我应该为 Azure 表使用什么包