0

我想在我的 Angular SPA 中使用带有 PKCE 的代码流,为了方便我使用这个库:angular-oauth2-oidc

如果您单击该链接,则表示通过此配置,您将使用带有 PKCE 的代码流:

let authConfig: AuthConfig = {
      issuer: 'https://myIssuerURL.com',
      redirectUri: 'https://myRedirectURI.com',
      clientId: environment.myclientId,
      scope: 'openid',
      responseType: 'code',
      showDebugInformation: true,
    };

当用户单击登录时,我使用此命令启动流程:

this.oauthService.initCodeFlow();

这有效,我收到了访问权限和 ID 令牌,但是我如何确定我使用的是带有 PKCE 的代码流,而不仅仅是没有 PKCE 的普通代码流?代码挑战和验证器的创建和存储是否都由库为我处理?有没有办法停止该过程并查看授权码或代码质询?

这可能是一个奇怪的问题,但我只想确定它使用的是 PKCE ......

4

3 回答 3

0

我很确定它确实如此 - 确定的方法是跟踪网络消息并在授权重定向中查找 code_challenge 和 code_challenge_method 参数。请参阅我的OAuth SPA 消息页面的第4 步和第 8 步,了解其外观。

于 2021-02-08T20:12:02.280 回答
0

另一种方法是基于您的身份颁发者配置。如果它设置要求 pkce 为真,那么你就清楚了

于 2021-08-27T05:49:50.320 回答
0
import { NgModule } from '@angular/core';
import { AuthModule } from 'angular-auth-oidc-client';


@NgModule({
    imports: [AuthModule.forRoot({
        config: {
            authority: 'https://login.microsoftonline.com/v2.0',
            //authWellknownEndpoint: 'https://login.microsoftonline.com/common/v2.0',
            redirectUrl: window.location.origin,
            clientId: '',
            scope: 'openid profile offline_access email', // 'openid profile offline_access ' + your scopes
            responseType: 'code',
            silentRenew: true,
            useRefreshToken: true,
            maxIdTokenIatOffsetAllowedInSeconds: 600,
            issValidationOff: false,
            autoUserInfo: false,
            customParamsAuthRequest: {
              prompt: 'consent', // login, consent
            },
    }
      })],
    exports: [AuthModule],
})
export class AuthConfigModule {}
于 2022-02-03T22:49:57.633 回答