OAuthを使用するWeb API用のスワッガードキュメントをセットアップしようとしています(OWINミドルウェア 'UseOAuthAuthorizationServer ')しかし問題に走っている。Web API(v5.2.3)でSwagger(Swashbuckle&Swashbuckle.Coreバージョンは5.3.2)を使用していますが、クライアントIDはnullです
私は以下のようにOAuthの闊歩の設定を行っている:
c.OperationFilter<AssignOAuth2SecurityRequirements>();
闊歩UI構成:
スコープと一般のOAuth設定:選択したAPIのOAuthを有効にする
c.OAuth2("oauth2")
.Description("OAuth2 Implicit Grant")
.Flow("implicit")
.AuthorizationUrl(ConfigurationManager.AppSettings[Constants.AuthorizationHostUrl])
.TokenUrl(ConfigurationManager.AppSettings[Constants.TokenUrl])
.Scopes(scopes =>
{
scopes.Add("Admin", "Admin permission required");
});
c.EnableOAuth2Support("MyPortal", "test-realm", "Swagger UI");
上記のコードでは、適切なエンドポイントメソッドでトグルボタンを表示できます。ボタンをクリックすると、上記の設定に従ってスコープが表示されます。
一度スコープを選択して認証ボタンを押すと、OAuthサーバーはクライアントを最初に検証してクライアントID値を渡していないように見えるため、認証に失敗します。問題は、私のOAuthサーバーで検出された、すなわち、
OAuthAuthorizationServerProvider::ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
方法は、ライン以下で失敗:
if (!context.TryGetBasicCredentials(out suppliedClientId, out suppliedClientSecret))
{
//if resource provider taking client credentials with FORMS authentication
context.TryGetFormCredentials(out suppliedClientId, out suppliedClientSecret);
}
if (context.ClientId == null)
{
context.SetError("invalid_clientId", "client_Id is not set");
return;
}
OAuthValidateClientAuthenticationContext引数は、クライアントに関する情報がありません。
上記の方法でデバッグしている間に、私はそれらのエラーポイントをエスケープし、クライアントを正常に検証しました。
しかし、それでもまだ、私は見当もつかないいるエラーの下になった:
unsupported_grant_type
誰かがこれらの問題を解決する方法を私を助けることができますか?
返信いただきありがとうございます。私はこの記事[リンク](http://www.wmpratt.com/part-ii-swagger-and-asp-net-web-api-enabling-oauth2/)に従いました。その記事の通り、私はスコープを私の役割の名前。あなたの返事の後、私はクライアントの-id(テスト目的のためだけ)にDictionary値をハードコードしましたが、依然としてnullとしてクライアントIDを取得しています。 –