想知道Azure Active Directory/Angular 2/Adal专家是否可以提供帮助。Angular 2 SPA Azure Active Directory JWT问题
我的设置如下:有三个应用程序注册的Azure Active Directory。一个用于Web API,一个用于WPF应用程序,另一个用于Angular 2应用程序。
用于Web API的配置看起来相当标准:
<add key="ida:Tenant" value="<tenant>" />
<add key="ida:Audience" value="<ResourceURI>" />
为WPF应用程序(这是工作)的配置
<add key="ida:AADInstance" value="https://login.windows.net/{0}"/>
<add key="ida:Tenant" value="<tenant>" />
<add key="ida:RedirectUri" value="<some redirect>" />
<add key="ida:ClientId" value="<client id as configured in Azure>" />
<add key="ApiResourceId" value="<The WEB API resource URI>"/>
<add key="ApiBaseAddress" value="<The base address of the Web API>"/>
这里是角2配置与NG2阿达尔和ADAL.js
public get adalConfig(): any {
return {
instance: 'https://login.windows.net/',
tenant: '<tenant>',
clientId: '<client id configured for Angular App in Azure AD>',
redirectUri: '<Angular 2 app Url>',
extraQueryParameter: 'nux=1',
postLogoutRedirectUri: '<Angular 2 app Url>',
cacheLocation: 'localStorage',
loginResource: '<Web API Resource Uri>',
};
angular和WPF都能够在AAD中登录并获得一个令牌。
问题在于Angular 2应用程序。
WPF应用程序(有效)可以正确登录到Azure Active Directory,并且Web API应用程序接受JWT(令牌),其余服务可以成功调用。
当WPF应用程序经由microsoft.online.com/xxxxxxx登录其提供一个令牌,其包括这样的权利要求:
Header
{
typ: "JWT",
alg: "RS256",
x5t: "_UgqXG_tMLduSJ1T8caHxU7cOtc",
kid: "_UgqXG_tMLduSJ1T8caHxU7cOtc"
}
Payload
{
aud: "<web api resource uri>",
iss: "https://sts.windows.net/1afea43f-3f0b-4a86-ad29-d444b80d2c91/",
iat: 1488889876,
nbf: 1488889876,
exp: 1488893776,
acr: "1",
aio: "NA",
amr: [
"pwd"
]
}
而对于此之一 - AUD参数是Web API资源URI 。和它完美的作品
我使用NG2阿达尔这是一个包装周围adal.js对角2.所以当它的角2个应用程序日志收到令牌,看起来像这样:
Header
{
typ: "JWT",
alg: "RS256",
x5t: "_UgqXG_tMLduSJ1T8caHxU7cOtc",
kid: "_UgqXG_tMLduSJ1T8caHxU7cOtc"
}
Payload
{
aud: "<angular app client id>",
iss: "https://sts.windows.net/1afea43f-3f0b-4a86-ad29-d444b80d2c91/",
iat: 1488888955,
nbf: 1488888955,
exp: 1488892855,
amr: [
"pwd"
]
}
所以主要区别 - ,我想为什么我得到错误是在WPF应用程序令牌中的aud参数包含正确的受众并且正在接受,而Angular应用程序正在从其令牌返回客户端ID它与Web API中的资源URI不匹配,因此给我一个401错误 - 授权有蜜蜂n拒绝此请求
有谁知道如何配置NG2-ADAL(adal.js)以使Azure活动目录发出包含JWT的aud参数中的资源URI的令牌?
我已经尝试了loginResource参数和端点集合,但没有运气。
非常感谢......
不确定为什么我被投票下来。我试图清楚地说明我所尝试过的,有效的,我认为的问题以及潜在的解决方案。 –