Postman を使用して IdentityServer4 PKCE 認証を機能させることができません。
オンライン ツールを使用して、必要なパーツを作成します。
ランダムな文字列を選択してください:
1234567890
その SHA-256 ハッシュを取得します。
c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646
Base64 でハッシュをエンコードして、コード チャレンジを取得します。
Yzc3NWU3Yjc1N2VkZTYzMGNkMGFhMTExM2JkmTAyNjYxYWIzoDgyOWNhNTJhNjQyMmFiNzgyODYyZjI2ODY0Ng==
ブラウザーで次の URL に移動し、資格情報を入力して、フラグメント化されたリダイレクト URL からコードを取得します。
GET https://localhost:5000/connect/authorize
?client_id=pkceclient
&scope=openid
&response_type=code
&redirect_uri=https://jwt.ms
&state=abc
&nonce=xyz
&code_challenge=Yzc3NWU3Yjc1N2VkZTYzMGNkMGFhMTExM2JkMTAyNjYxYWIzODgyOWNhNTJhNjQyMmFiNzgyODYyZjI2ODY0Ng==
&code_challenge_method=S256
コードをトークンに引き換えるとき、code_verifier (SHA-256 ハッシュ) を渡しますが、IdentityServer は次のエラーをログに記録します。
「変換されたコード検証ツールがコード チャレンジと一致しません」。
POST https://localhost:5000/connect/token
client_id=pkceclient
grant_type=authorization_code
code:-CesrmjPYjdLdDd5AviOZpR6GdjjkZia_ZapoJdGUZI
redirect_uri=https://jwt.ms
code_verifier=c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646
ブログ投稿で、著者は次のコードを使用してパーツを生成しています。
var verifier = CryptoRandom.CreateRandomKeyString(64);
var challenge = verifier.ToCodeChallenge();
ToCodeChallenge
メソッドのリポジトリにコードが見つかりません。
手動で生成したチャレンジが検証プロセスで使用したチャレンジと一致しないのはなぜですか?何が欠けていますか?