2017-03-02 9 views
5

私はWebAPIコントローラのドキュメントにSwashbuckleを使用しています。また、クライアント証明書フローでOAuth2を使用します。したがって、私はclient_idclient_secretを渡す必要があります。Swashbuckle OAuth2クライアント資格での承認フロー

config.EnableSwagger(c => { 
    c.SingleApiVersion("v1", "My API"); 
    c.OAuth2("oauth2") 
     .Flow("application") 
     .TokenUrl("/oauth2/token"); 
    c.OperationFilter<AssignOAuthSecurityRequirements>(); 
}) 
.EnableSwaggerUi(c => { 
    c.EnableOAuth2Support(clientId: "clientIdValue", clientSecret:"clientSecretValue", "", ""); 
    c.CustomAsset("index", Assembly.GetExecutingAssembly(), "WebAPI.Swagger.UI.index.html"); 
}); 

認証が正常に動作しますが、私のclient_idclient_secret値は(clientIdValue、clientSecretValue)ハードコードされています

は、私は次のコードを持っています。このダイアログでユーザーが値を入力する方法を追加するにはどうすればよいですか?誰でも助けてくれますか?

enter image description here

私もAssignOAuthSecurityRequirementsのコードをポストする必要がある場合は私に知らせてください。すべて前もってありがとうございます

+0

これを解決しましたか?私は同じ質問の解決策を探しています。 – jks

+0

また、消費者がclient_idとclient_secretを入力して認証するためのダイアログをどのように入手できるのか不思議です。これは奇妙なことですか? – Zoop

答えて

0

あなたのコードで何が問題になったのか正確には分かりません。

私は、「アプリケーション」と呼ばれるので、あなたのStartup.csファイルにされているクライアントの資格情報が流れASP.NETコアとSwashbuckle.AspNetCoreの現在のバージョン(https://github.com/domaindrivendev/Swashbuckle.AspNetCore

で正常にそれをやりました次のように闊歩を設定する必要があります。

 services.AddSwaggerGen(c => { 

      //other configs... 

      c.AddSecurityDefinition("oauth2", new OAuth2Scheme { 
       Type = "oauth2", 
       Flow = "application", 
       TokenUrl = "<token_endpoint_url>", 
       Scopes = new Dictionary<string, string> 
       { 
        { "first-scope", "First scope description" }, 
        { "second-scope", "Second scope description" } 
        //define as many scopes as you want... 
       } 
      }); 
     }); 

TokenUrlパラメータが有効なのOAuth 2.0に準拠し、トークンエンドポイント(エンドポイントは次のようになり/どのように振る舞うべきかのサンプルのためのチェックアウトhttp://docs.identityserver.io/en/release/endpoints/token.html)を指している必要があります。私のテストでは、絶対URLと相対URLの両方が働いていました。

その後、認証ダイアログは怒鳴るようになります。

Authorize popup

  • を許可]ボタンが実際には何も(OAuthのコンポーネントすべきを提出する前には、少なくとも1つのスコープを選択する必要があることに注意してください免責条項IMHOを追加するように変更することができます)。

SwaggerUIセクションで追加の設定は必要ありません。

関連する問題