我创建了Web应用程序(Angular 5 + MSAL + ASP.NET Core)并将其连接到Azure AD B2C。签名时我需要自定义流程,所以我必须使用自定义策略。 Auth工作正常。然后我不得不添加另一个Azure AD提供程序。这笔交易是来自AAD和ADD B2C的用户签署了不同的行为。
一般代码如下:
this.clientApplication = new UserAgentApplication(
environment.auth.clientId,
environment.auth.loginAuthority,
this.authCallback.bind(this),
{
validateAuthority: false,
cacheLocation: 'localStorage',
logger: logger
}
);
...
public login(): void {
return this.clientApplication.loginRedirect(environment.auth.scopes);
}
...
public getAccessTokenAsync(): Promise<string> {
return this.clientApplication.acquireTokenSilent(environment.auth.scopes)
.then((accessToken: string) => {
return accessToken;
})
.catch((silentError: object) => {
return this.clientApplication.acquireTokenPopup(environment.auth.scopes)
.then((accessToken: string) => Promise.resolve(accessToken))
.catch((popupError: object) => {
return Promise.resolve('');
});
});
}
首先我使用login
,当http调用发生时,我使用getAccessTokenAsync
。
来自B2C的用户从登录重定向,acquireTokenSilent
返回访问令牌。
来自AD的用户从登录重定向,acquireTokenPopup
引发错误,但令牌已保存到本地存储,因此刷新后可以正常工作。 (错误:拒绝在一个框架中显示&#39; http ...&#39;因为它设置了“X-Frame-Options&#39; to deny&#39 ;.”
为什么会有这样的想法呢?