+-

对于我正在使用此库的项目:angular-oauth2-oidc以支持OAuth 2和Angular中的OpenId Connect(OIDC)。
我已完成所有设置,并且一切正常。
MainComponent File:
export class MainComponent implements OnInit {
constructor() {
this.configureSSO();
}
configureSSO() {
this.oAuthService.configure(authConfig);
this.oAuthService.tokenValidationHandler = new JwksValidationHandler();
this.oAuthService.loadDiscoveryDocumentAndTryLogin().then(() => {
// the lib received the access_token as well as the id_token, if it was requested.
// If there is an id_token, the lib validated it.
// DO STUFF WITH TOKEN HERE
});
}
}
authConfig文件:
import {AuthConfig} from 'angular-oauth2-oidc';
export const authConfig: AuthConfig = { /...SOME CONFIG HERE .../ }
AuthGuard文件:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router, private oAuthService: OAuthService) {
}
canActivate(): boolean {
if(this.oAuthService.hasValidIdToken()){
return true;
}
return false;
}
}
在OIDC提供商网站上成功登录后,我可以看到将access_token蜜蜂保存在本地浏览器的会话存储中:
这一切都很好,但是,如果我现在继续进行会话存储中的令牌[[change,我仍然可以进入受保护的路由。尽管access_token已更改。更改id_token时也是一样。
有人可以启发我如何做到这一点吗?
我无法在文档Documentation angular-oauth2-oidc中找到有关此内部处理方式的任何信息>
我很确定这不是实现错误,而是库将令牌保存在内部的某个地方,而是使用未更改的令牌,因为其他所有内容都可以正常工作。
但是如果不(真的)使用令牌,为什么仍将令牌保存在会话存储中呢?!?
更多:整个令牌,则实际上所有被阻止的路由都被阻止了,这很不错:)!当我将JWT内部的Expireation Time(exp)更改为实际时间之前的值时,也会发生同样的事情。因此,这两项检查实际上都可以正常工作,但是当更改如果我实际上是从存储中
删除
access_token或id_token时,AuthGuard仍然会获得有效的令牌...(也许是从lib内部![我认为我对JWT总体上不了解,为什么它们甚至保存在本地/会话存储中,或者为什么对其进行更改没有任何作用...非常感谢任何回答。
对于使用该库的项目,我使用:angular-oauth2-oidc在OAuth 2中提供支持,在Angular中使用OpenId Connect(OIDC)。我已经完成所有设置,并且一切正常。 MainComponent文件:导出...
0
投票
投票
在基本情况下,该库将假定JavaScript的每一位都可以在会话存储中“很好地发挥作用”,从而将其有效地视为该库的
private
存储。如果您想清除登录名以便路由卫士可以接听,则您不要自己 pry