【发布时间】:2018-10-14 10:32:52
【问题描述】:
我有注册到 azure AD 的 webapi。 在 Startup.Auth.cs 中有以下代码
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ClientId,
Authority = Authority,
PostLogoutRedirectUri = PostLogoutRedirectUri
});
当我在浏览器中运行这个 webapi 时,它会要求登录,登录成功后可以看到所有 api 的 url。
我正在尝试从注册到同一天蓝色 AD 的 Web 应用程序访问此安全 API。
当我在 Webapp 中使用 AcquireTokenAsync 为这个 webapi 生成访问令牌时,它可以工作,但会给出登录 html 页面作为响应。
为避免这种情况,我尝试使用 AcquireTokenSilentAsync 生成静默令牌,但出现异常 unable to generate token cache not found 但缓存键仍然存在异常。
在一些 google git post 建议在 WebApi 中使用UseWindowsAzureActiveDirectoryBearerAuthentication 后,他们说当从 webapp 调用而不是登录页面输出时,它将返回 api 的输出,但它不起作用。
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = false
}
});
【问题讨论】:
标签: c# .net azure azure-active-directory