我正在使用MSAL库在Angular5应用程序中对Azure B2C进行身份验证 . 我将MS和Google帐户以及本地电子邮件配置为提供商,他们都很乐意获得初始令牌 . 然后通过JWT提供程序nugget包对我的dotnet核心WebAPI后端起作用 .
我'm not sure how I' m意味着更新令牌,但调用MSAL库的 acquireTokenSilent
函数会导致Microsoft和Google提供商令牌重定向回Azure然后再返回我的应用程序(在SPA应用程序中不可取) . 本地电子邮件会抛出一个关于州的错误,但是并没有那么担心 .
许多示例应用程序都说Silent renewing of access tokens is not supported by all social identity providers,但没有详细说明哪些应用程序......
有没有一种方法可以使用MSAL在没有完全重定向的情况下获得针对B2C的替换令牌?
this.app.acquireTokenSilent(this.config.b2cScopes)
.then((newToken) => {
if (newToken) {
console.log(`got new token ${token}`);
return newToken;
}
else {
console.log('went bang');
//presumably this blewup...
}
})
.catch((fail) => {
console.error(fail);
});
调用此函数会导致重定向 . 最初,这请求 login.microsoftonline
获取open-id配置 . 然后它要求https://login.microsoftonline.com/te/{tenant}/{policy}/oauth2/v2.0/authorize?response_type=token&scope={url + scope name} openid profile&state=9c23e002-a07c-4adb-a7fd-db5400f2b8ee&nonce=0ed5c352-d363-4e5e-bd40-4dc10936361f&client_info=1&x-client-SKU=MSAL.JS&x-client-Ver=0.1.5&client-request-id=3889aaeb-4b47-4726-9ef0-e4e3c73ea1e5&prompt=none&domain_req=ba2006a0-9352-424d-81b5-f2df33157082&login_req=213613d5-8217-4db9-8419-60441a5b512f-b2c_1_signup&domain_hint=organizations
哪个302周围的 login.live.com
带有响应 JavaScript required to sign in
. 然后,我被丢弃回我的应用程序,没有新的令牌,也没有真正的想法为什么它的不安除了怀疑正在使用错误的流程和B2C试图通过交互路线获得新的令牌 .
范围方面,B2C租户默认配置了 openid
和 offline_access
,并且针对应用程序 user_impersonation
(默认存在)和一个名为 read
的新范围 . 我正在请求 this.config.b2cscopes
发送这些范围 . openid
和 profile
MSAL似乎自行添加 .