MSAL - 重定向 URI 上的 MsalGuard - 进入重定向循环
MSAL - MsalGuard on Redirect URI - getting into redirect loop
我正在我的 angular 应用程序中实现 msal
,并且我正在使用 msal-v1
库。
我从记录的示例中获取了 angular-7
示例,并尝试在我的企业应用程序中实现以下代码。
我在app.module.ts
中添加了popup as false
MsalModule.forRoot(
{
auth: {
clientId: "app client id",
authority:
"https://login.microsoftonline.com/tenant.onmicrosoft.com/",
validateAuthority: true,
redirectUri: window.location.origin,
postLogoutRedirectUri:
window.location.origin,
navigateToLoginRequestUrl: true,
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: isIE, // set to true for IE 11
},
},
{
popUp: false,
consentScopes: ["user.read", "openid", "profile"],
unprotectedResources: ["https://www.microsoft.com/en-us/"],
protectedResourceMap,
extraQueryParameters: {},
}
)
在 app-routing.module.ts 上,我添加了 MsalGuard on the empty route
,因为我的应用程序没有任何登录按钮,默认登录页面也需要身份验证。
const routes: Routes = [
{
path: "",
component: HomeComponent,
canActivate: [MsalGuard],
},
{
path: "profile",
component: ProfileComponent,
canActivate: [MsalGuard],
},
];
@NgModule({
imports: [RouterModule.forRoot(routes, { useHash: false })],
exports: [RouterModule],
})
export class AppRoutingModule {}
通过这样做,如果我在没有任何路由的情况下直接访问域 URL(即重定向 URI),我能够在本地存储中正确授权和获取令牌,但是如果我们清除本地存储并然后直接导航到配置文件路径,我无法获取令牌,因为它正在连续输入 redirect loop
.
应用程序正在重定向到 /#id_token=eyJ,然后重定向到 /profile/#id_token=eyJ 等等。
请指导我如何保护我的 angular 应用程序中的所有路由,而不是进入重定向循环。
msal version - 1.4.4
msal-angular - 1.1.2
我在 github(msal-v1
) 论坛中讨论了相同的问题,并通过设置一条没有 MsalGuard
但指向相同 HomeComponent
.
const routes: Routes = [
{
path: '',
component: HomeComponent,
canActivate: [
MsalGuard
]
},
{
path: 'auth-redirect',
component: HomeComponent
},
{
path: 'profile',
component: ProfileComponent,
canActivate: [
MsalGuard
]
}
];
讨论了全部细节here
我正在我的 angular 应用程序中实现 msal
,并且我正在使用 msal-v1
库。
我从记录的示例中获取了 angular-7
示例,并尝试在我的企业应用程序中实现以下代码。
我在app.module.ts
中添加了popup as false
MsalModule.forRoot(
{
auth: {
clientId: "app client id",
authority:
"https://login.microsoftonline.com/tenant.onmicrosoft.com/",
validateAuthority: true,
redirectUri: window.location.origin,
postLogoutRedirectUri:
window.location.origin,
navigateToLoginRequestUrl: true,
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: isIE, // set to true for IE 11
},
},
{
popUp: false,
consentScopes: ["user.read", "openid", "profile"],
unprotectedResources: ["https://www.microsoft.com/en-us/"],
protectedResourceMap,
extraQueryParameters: {},
}
)
在 app-routing.module.ts 上,我添加了 MsalGuard on the empty route
,因为我的应用程序没有任何登录按钮,默认登录页面也需要身份验证。
const routes: Routes = [
{
path: "",
component: HomeComponent,
canActivate: [MsalGuard],
},
{
path: "profile",
component: ProfileComponent,
canActivate: [MsalGuard],
},
];
@NgModule({
imports: [RouterModule.forRoot(routes, { useHash: false })],
exports: [RouterModule],
})
export class AppRoutingModule {}
通过这样做,如果我在没有任何路由的情况下直接访问域 URL(即重定向 URI),我能够在本地存储中正确授权和获取令牌,但是如果我们清除本地存储并然后直接导航到配置文件路径,我无法获取令牌,因为它正在连续输入 redirect loop
.
应用程序正在重定向到 /#id_token=eyJ,然后重定向到 /profile/#id_token=eyJ 等等。
请指导我如何保护我的 angular 应用程序中的所有路由,而不是进入重定向循环。
msal version - 1.4.4
msal-angular - 1.1.2
我在 github(msal-v1
) 论坛中讨论了相同的问题,并通过设置一条没有 MsalGuard
但指向相同 HomeComponent
.
const routes: Routes = [
{
path: '',
component: HomeComponent,
canActivate: [
MsalGuard
]
},
{
path: 'auth-redirect',
component: HomeComponent
},
{
path: 'profile',
component: ProfileComponent,
canActivate: [
MsalGuard
]
}
];
讨论了全部细节here