我使用的是OKTA,登录后获取id_token作为URL中的响应。问题是,每当我调用this.oauthService.getIdToken()时,我都会得到null。下面是我的配置。
import { AuthConfig } from 'angular-oauth2-oidc';
export const authConfig: AuthConfig = {
issuer: 'https://dev-350189.okta.com',
clientId: "XXXXXXX",
logoutUrl: "https://dev-350189.okta.com/oauth2/v1/logout",
redirectUri: window.location.origin +'/home',
scope: 'openid profile',
responseType: 'id_token',
oidc: true,
requestAccessToken: true,
showDebugInformation: true,
clearHashAfterLogin: false,
}
app.component.ts
private configure() {
this.oauthService.configure(authConfig);
this.oauthService.setStorage(localStorage);
this.oauthService.tokenValidationHandler = new JwksValidationHandler();
this.oauthService.createAndSaveNonce().then(nonce => {
console.log('Nonce generated', nonce);
this.oauthService.customQueryParams = { "nonce": nonce };
// Load Discovery Document and then try to login the user
this.oauthService.loadDiscoveryDocument().then(() => {
this.oauthService.tryLogin().then(() => {
console.log("final output");
console.log(this.oauthService.getIdToken());
});
});
});
}
请帮助我两天以来挣扎的人们。
答案 0 :(得分:1)
我有一个有效的Okta示例,可能会有所帮助-尝试使用与这些设置相同的设置: https://github.com/gary-archer/authguidance.websample1/blob/master/spa/src/plumbing/oauth/authenticator.ts
当今最标准的流程是response_type ='code',这意味着Okta完全支持的授权代码流程(PKCE)。
如果有帮助,示例中的README文件可以链接到某些博客文章