私は、identityserver4 docsチュートリアルに基づいて、client_credentialsを使用して、基本IdentityServer4トークンサーバー、Api、およびテストクライアントアプリケーションのセットアップを行っています。IdentityServer4 IExtensionGrantValidator
私たちには、ユーザーがIdentityServer4に縛られていない既存の資格情報でログインする、事前構築されたクライアントアプリケーションがあります。 Apiにアクセスする必要のあるクライアントアプリケーションごとに複数のユーザーを作成したくないため、クライアントアプリケーションはclient_credentialsワークフローを使用してApiを呼び出します。
IdentityServer4で上記の設定を使用すると、これはclient_Credentialsワークフローで正しく機能します。私が直面する問題は、個々のユーザーが自分自身を認証する必要はありませんが、user_idを使用して、自分が誰であるかを知りたいと思っています。私は単に& user_id = 9999をトークン要求に追加することができますが、要求が行われた時点でトークンサーバーからこの情報を取得する方法を見つけることができませんでした。いくつかの調査の後、私はIExtensionGrantValidatorに出くわしました。これにより、cstomグラントタイプを追加してリクエストをインターセプトし、カスタム処理を行うことができます。問題は、正しく設定したかのように見えますが、私はまだinvalid_grantエラーが発生しています。新しいクライアントのブロックで
public class CustomGrantValidator : IExtensionGrantValidator
{
public string GrantType => "custom_credentials";
public Task ValidateAsync(ExtensionGrantValidationContext context)
{
return Task.FromResult(context.Result);
}
}
:スタートアップ
.AddExtensionGrantValidator<CustomGrantValidator>();
で
AllowedGrantTypes =
{
GrantType.ClientCredentials,
"custom_credentials"
},
ので、私は私がIdentityServer4と.NETのコアに新しいです。ここ
はコードがあります私は間違ったやり方をしているか、基本的な整備士をここで理解していないことを確かめている