Azure AD B2C: 機密許可を取得する際にクライアントは client_secret を送信する必要があります 質問する

Azure AD B2C: 機密許可を取得する際にクライアントは client_secret を送信する必要があります 質問する

認証コードと Azure AD B2C (クライアント側の oidc-client) を使用して Angular アプリの認証を設定しようとしましたが、Angular から次のエラーが発生します。

ここに画像の説明を入力してください

B2C 監査ログを確認したところ、次のエラー メッセージが見つかりました。

クライアントは、機密許可を利用する際に client_secret を送信する必要があります。

クライアント側の構成は次のとおりです。

const settings = {
  stsAuthority: 'https://supportodqqcdev.b2clogin.com/supportodqqcDev.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_SignUpSignInOdqPlatine',
  clientId: '8447df5b-35a0-40a7-944f-5dcce87a2193',
  clientRoot: 'https://localhost:4200',
  scope: 'openid https://supportodqqcDev.onmicrosoft.com/platineclientdev/read',
};
this.userManager = new UserManager({
  authority: settings.stsAuthority,
  client_id: settings.clientId,
  redirect_uri: `${settings.clientRoot}/signin-callback`,
  scope: settings.scope,
  response_type: 'code',
  post_logout_redirect_uri: `${settings.clientRoot}/signout-callback`,
  automaticSilentRenew: true,
  silent_redirect_uri: `${settings.clientRoot}/assets/signin-silent-callback.html`,
});

上記の構成を切り替えてローカル IdentityServer インスタンスを使用すると、すべてが期待どおりに動作します。

これをどこで、どのように調査すればよいか教えていただけますか?

ベストアンサー1

私もあなたとまったく同じ問題を抱えていましたが、解決することができました。

AD は PKCE 用にまだ構成されていないため、client_secret を要求しています。特定のリダイレクト URL に PKCE を使用することを AD に伝えるには、そのタイプを から に設定する必要があります'Web''Spa'これはマニフェストで行うことができます。

replyUrlsWithTypeマニフェストでプロパティを検索し、 .../signin-callbackURL を探します。そのタイプを に変更すれば'Spa'、問題は解決するはずです。

例えば。:

"replyUrlsWithType": [
    {
        "url": "http://localhost:8080/signin-callback",
        "type": "Spa"
    },
]

構成された URL は認証ページから消えますが、問題ありません -> マニフェストにはまだ存在します。MS チームはこの新しいタイプに取り組んでいます。

また、アプリケーションをパブリック クライアントとしてマークしていることを確認してください。

詳細については、私の回答をご覧ください:Active Directory は PKCE による認証コード フローをサポートしていないのですか?

おすすめ記事