【发布时间】:2017-05-28 21:26:42
【问题描述】:
我正在使用 ADAL JS 针对 Azure AD 对用户进行身份验证。由于我是 ADAL JS 的新手,我开始阅读以下文章,我觉得这些文章非常有用:
阅读文章后,我的印象是ADAL JS 拦截了服务调用,如果服务 url 在AuthenticationContext 配置中注册为端点之一,它会附加 JWT 令牌作为身份验证承载信息。
但是,我发现我的情况并没有发生同样的情况。经过一番挖掘,在我看来,只有在使用 adal-angular 计数器部件时才有可能,我目前没有使用它,仅仅是因为我的 Web 应用程序不是基于 Angular。
请让我知道我的理解是否正确。如果我需要显式添加承载信息,也可以这样做,但我更担心我是否缺少一些开箱即用的工具。
其他详细信息:我目前的配置如下所示:
private endpoints: any = {
"https://myhost/api": "here_goes_client_id"
}
...
private config: any;
private authContext: any = undefined;
....
this.config = {
tenant: "my_tenant.onmicrosoft.com",
clientId: "client_id_of_app_in_tenant_ad",
postLogoutRedirectUri: window.location.origin,
cacheLocation: "sessionStorage",
endpoints: this.endpoints
};
this.authContext = new (window["AuthenticationContext"])(this.config);
同样在服务器端(WebApi),认证配置(Startup.Auth)如下:
public void ConfigureOAuth(IAppBuilder app, HttpConfiguration httpConfig)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = "my_tenant.onmicrosoft.com",
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = "client_id_of_app_in_tenant_ad"
}
});
}
但是,Authorization 在request.Headers 中始终为空。
更新:似乎这同样适用于令牌的自动更新;当与adal-angular 一起使用时,令牌的更新可以通过在后台调用AuthenticationContext.acquireToken(resource, callback) 无缝进行。如果我错了,请纠正我。
【问题讨论】:
标签: javascript azure asp.net-web-api adal.js