リソース所有者のパスワードフローを使用する場合、fetch with IdentityServer4を使用してJWTトークンを取得する方法を教えてください。 (ほとんどの場合は推奨されません)。Identity Server 4でfetchを使用する
暗黙のフローを使用する必要がある場合でも、私のスパアプリケーションでは私の状況ではより利便性が高いので、このフローを使用したいと思います。 、あなたはあなたのソリューションを実装するためにここに役に立つ情報を最初に見つけることができます:
しかし、どのようにトークンを取得するには、[フェッチ-API]を使用する方法アイデンティティサーバー4?
const form = new FormData();
form.append('grant_type', 'password');
form.append('username', username);
form.append('password', password);
if (this._settings.scope) {
form.append('scope', this._settings.scope);
}
form.append('client_id', this._settings.clientId);
if (this._settings.clientSecret) {
form.append('client_secret', this._settings.clientSecret);
}
var options = {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data'
},
rejectUnauthorized: false, // when use local unverified certificate
body: form
};
応答でJWTトークンを受け取る必要がありますが、http 500エラーが表示されます。 「内部サーバーエラー」
私はシオマネキとHTTPヘッダをトレースした場合、私は以下の結果を得た:
POST http://127.0.0.1:8888/ HTTP/1.1
content-type: multipart/form-data
accept-encoding: gzip,deflate
user-agent: node-fetch/1.0 (+https://github.com/bitinn/node-fetch)
connection: close
accept: */*
content-length: 896
Host: 127.0.0.1:8888
identityserverログには何が表示されますか? – cheesemacfly
'DBUG:IdentityServer4.Validation.PostBodySecretParser [0]ポスト体 クリティカルで秘密のための解析を開始 :IdentityServer4.Hosting.IdentityServerMiddlewareを[0] 未処理の例外:System.IO.InvalidDataException:** コンテンツタイプの境界がありません。 ** Microsoft.AspNetCore.Http.Features.FormFeature.GetBoundary(MediaTypeHeaderValueのcontentType、のInt32 lengthLimit)Microsoft.AspNetCore.Http.Features.FormFeatureで ました。 d__18.MoveNext() ---例外がスローされた前の場所からのスタックトレースの終了--- –
Armand
"content-type"をヘッダから削除すると、動作します。 私は後で答えを出すが、このコードは要求jsモジュールで動作するコピー/ペーストに由来することに注意してください。 (渡されたcontent-typeを上書きする要求) – Armand