我正在使用Anp.Net WebAPI调用AnguarJS SPA应用程序。
我已经在Azure AD上注册了客户端和后端应用程序。
我的客户端/ Web应用程序已注册,并包含以下详细信息:
我已将其他应用程序的权限(代理权限)授予客户端应用程序以访问WebAPI(LocalWebAPI)。
我的WebAPI具有以下设置:
它使用的OWIN中间件的startup.cs文件为:
公共类启动{公共无效配置(IAppBuilder应用){ConfigureAuth(app);}
private void ConfigureAuth(IAppBuilder app)
{
var azureADBearerAuthOptions = new
WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
};
azureADBearerAuthOptions.TokenValidationParameters =
new System.IdentityModel.Tokens.TokenValidationParameters()
{
ValidAudience =
ConfigurationManager.AppSettings["ida:Audience"]
};
app.UseWindowsAzureActiveDirectoryBearerAuthentication(azureADBearerAuthOptions);}
它使用以下参数在Azure AD上注册:
登录URL:http://localhost:93/Api/V1/APP ID URI:https://xyz.onmicrosoft.com/LocalCognia回复网址:http://localhost:93/Api/V1/ *
我的Web.Config文件是:
<add key="owin:AutomaticAppStartup" value="true"/>
<add key="ida:Tenant" value="xyz.onmicrosoft.com" />
<add key="ida:Audience" value="34A721C3-20E4-41D5-9BC1-486A99BF7C26" />
我还用[Authorize]属性装饰了我的控制器。
一切似乎都正常。从Visual Studio 2015环境(IIS Express)运行我的应用程序时,我能够对用户进行身份验证并能够从WebAPI访问资源。
但是一旦我使用相同的参数将应用程序部署到IIS服务器上((期望该应用程序现在位于localhost:8087上,并且客户端应用程序的回复URL为:localhost:8087),我就会错误为401:调用WebAPI时未经授权的用户。
我正在WebAPI调用的标题中获取令牌,但仍然收到错误。不知道这种行为。有人可以帮忙吗?
请在您的ConfigureAuth中使用以下代码:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(新的WindowsAzureActiveDirectoryBearerAuthenticationOptions{租户= ConfigurationManager.AppSettings [“ ida:Tenant”],TokenValidationParameters =新的TokenValidationParameters{ValidAudience = ConfigurationManager.AppSettings [“ ida:Audience”]},});