この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 1|答える: 0

OIDCにおけるPKCEのcode_challengeとcode_vertifierの理解

[リンクをコピー]
掲載地19秒前 | | | |
OAuth 2.0は複数の認可モードを提供しており、その中で最も一般的に使われ、安全性が高いのはAuthorization Code Grantです。code_challengeはこのモード内でセキュリティ強化された機能であり、主にPKCE(Proof Key for Code Exchange)メカニズムで使用されています。

PKCEとは何ですか?

PKCE(Proof Key for Code Exchange)は、特にJavaScriptアプリケーションやブラウザ上で動作するモバイルアプリなどのパブリッククライアントで使用される場合、OAuth 2.0認証コードパターンのセキュリティを強化するために設計された拡張です。PKCEは認可要求に追加の認証ステップを追加することで、認可コードの遮受や悪用を防ぎます。

code_challenge役

code_challengeはPKCEメカニズムの一部であり、認可要求フェーズ中に生成・送信されます。これは秘密値(code_verifierと呼ばれる)に基づいており、S256のようなハッシュアルゴリズムによって変換されます。code_challengeの目的は、code_verifierを直接公開することなく、その後のトークン要求に対して検証基盤を提供することです。

code_challengeとcode_verifierの生成と利用

ジェネレーションcode_verifier:
code_verifier は高エントロピーでランダム生成の文字列です。文字長(43から128の間)。デフォルト値は43です。

ジェネレーションcode_challenge:
code_verifierを用いて、code_challengeはハッシュアルゴリズム(例えばS256)によって生成されます。S256の場合、code_challengeはcode_verifier SHA-256ハッシュ値のBase64 URLエンコーディングですが、エンコーディングから=パディング文字を削除し、出力長は43文字でなければなりません(Base64 URLエンコーディング後は4文字ごとに3バイトになりますが、最後の文字ブロックは4文字未満の場合があるため、=文字を除去した後は長さがわずかに変わることがあります)。

承認申請でcode_challengeを活用する:
認可要求を開始する際、code_challengeは認可サーバーへのリクエストパラメータの一つとして送信されます。

トークンリクエストにおけるcode_verifierの利用:
認可サーバーが認可コードを返すと、クライアントはこのコードと以前に生成されたものcode_verifierを使ってトークンエンドポイントへのアクセスを要求します。認可サーバーはcode_challengeとcode_verifierが一致しているかを検証し、リクエストが元のクライアントによって開始されていることを確認します。

PKCE生成

オンラインPKCE生成ツール:ハイパーリンクのログインが見えます。

C#コードは次のように生成されます:
以下に示すように:



参考:

ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。




先の:.NET/C# JWTトークン署名の有効性を検証する2つの方法
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com