我正在使用Asp.Net WebAPI调用AnguarJS SPA应用程序。
我已在Azure AD上注册了客户端和后端应用程序。
我的客户端/网络应用程序注册了以下详细信息:
我已授予客户端应用程序访问WebAPI(LocalWebAPI)的其他应用程序(委派权限)的权限。
我的WebAPI具有以下设置:
它正在使用带有startup.cs文件的OWIN Middleware:
public class Startup { public void Configuration(IAppBuilder app) { 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上注册了以下参数:
登录网址: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" />
我还使用[授权]属性修饰了我的控制器。
一切似乎都很好。当我从Visual Studio 2015环境(IIS Express)运行我的应用程序时,我能够对用户进行身份验证并能够从WebAPI访问资源。
但是一旦我在IIS服务器上部署我的应用程序,使用相同的参数,(期望应用程序现在在localhost:8087上,并且客户端应用程序的回复URL为:localhost:8087),我是获取错误401:UnAuthroized用户调用WebAPI。
我在WebAPI调用的Headers中获取令牌,但仍然收到错误。不确定这种行为。有人可以帮忙吗?
答案 0 :(得分:0)
请在您的ConfigureAuth中使用以下代码:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});