2017-10-12 3 views
0

私は、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のコアに新しいです。ここ

はコードがあります私は間違ったやり方をしているか、基本的な整備士をここで理解していないことを確かめている

答えて

0

同じエラーで問題が発生しているため、これが見つかりましたが、何もしないため、バリデーターは役に立たないと確信しています。結果を次のように設定する必要があります。

この例では、この値を追加して結果を設定しています。

関連する問題