2017-07-19 4 views
0

私はAPI全体を配備し、Swagger UIでアクセス可能です。それはHTTPSを介して基本認証を使用し、1つは簡単に認証ボタンを押して資格情報を入力して、素敵なものが素晴らしい試してみてください!特徴。Swagger UIを使用してすべてのエンドポイントを自動的に認可するにはどうすればよいですか?

しかし、共有されたユーザー名とパスワードを使用して公開されたAPIのサンドボックス版を作成したい場合は、常に認証されています。つまり、資格情報を入力するために承認ダイアログを表示する必要はありません。

私はHTMLページにscript要素内に次のコードを置くことで、別のStackOverflowの質問からの回答に基づいて承認を入力しようとした:

window.swaggerUi.load(); 
    swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", "header")); 

しかし、私は認証があるTry it out!ボタンを押したときに使用されていない。

資格情報を手動で入力する必要がないように、すべてのエンドポイントで認証ヘッダーをグローバルに設定する適切な方法は何でしょうか?

(私はそれが奇妙な質問のように聞こえるかもしれないけど、私は言及のように、それは公共のユーザ名/パスワードです。)

+1

Swagger UIのどのバージョンですか?私はコードが2.x用であり、3.xでは(まだ)動作しないと思います。 – Helen

+0

実際には2.0ですが、残念ながらうまくいきません。おそらく、securityDefinitionsのようなYAML仕様の既存のフィールドと競合しているのでしょうか? –

答えて

1

私はPasswordAuthorization代わりのApiKeyAuthorizationを使用して、解決策を見つけました。

行うには正しい事はonCompleteハンドラに次の行を追加することです:

 swaggerUi.api.clientAuthorizations.add("basicAuth", 
     new SwaggerClient.PasswordAuthorization(
      "8939927d-4b8a-4a69-81e4-8290a83fd2e7", 
      "fbb7a689-2bb7-4f26-8697-d15c27ec9d86")); 

swaggerUiは、コールバックに渡されるので、これは使用する値です。また、authオブジェクトの名前がYAMLファイルの名前と一致していることを確認してください。

関連する問題