OAuth2 で Swashbuckle 5.0.x を使用しようとしています。OAuth2 の Resource Owner Password Credentials Grant を使用したいと考えています。私は基本的に、最初にトークンを要求し、このトークンを各要求に含めたいだけです (たとえば、スコープは必要ありません)。
誰でもこれを手伝ってもらえますか?swagger/swashbuckle を構成するにはどうすればよいですか?
OAuth2 で Swashbuckle 5.0.x を使用しようとしています。OAuth2 の Resource Owner Password Credentials Grant を使用したいと考えています。私は基本的に、最初にトークンを要求し、このトークンを各要求に含めたいだけです (たとえば、スコープは必要ありません)。
誰でもこれを手伝ってもらえますか?swagger/swashbuckle を構成するにはどうすればよいですか?
ありがとう@ダンケン。あなたの答えは私の問題をほぼ解決しますが、最新のSwashbuckleバージョンで動作させるには、このように少し変更する必要がありました
$('#explore').off();
$('#explore').click(function () {
var key = $('#input_apiKey')[0].value;
var credentials = key.split(':'); //username:password expected
$.ajax({
url: "yourAuthEndpoint",
type: "post",
contenttype: 'x-www-form-urlencoded',
data: "grant_type=password&username=" + credentials[0] + "&password=" + credentials[1],
success: function (response) {
var bearerToken = 'Bearer ' + response.access_token;
window.swaggerUi.api.clientAuthorizations.add('Authorization', new SwaggerClient.ApiKeyAuthorization('Authorization', bearerToken, 'header'));
window.swaggerUi.api.clientAuthorizations.remove("api_key");
alert("Login successfull");
},
error: function (xhr, ajaxoptions, thrownerror) {
alert("Login failed!");
}
});
});
OK、私は次のように解決しました:
JavaScript 補完ハンドラーを swagger に追加します。
config
.EnableSwagger(c => {
//do stuff
})
.EnableSwaggerUi(c => {
c.InjectJavaScript(typeof(Startup).Assembly, "MyNamespace.SwaggerExtensions.onComplete.js");
});
API_KEY テキストボックスから username:password を取得します。
$('#input_apiKey').change(function () {
var key = $('#input_apiKey')[0].value;
var credentials = key.split(':'); //username:password expected
$.ajax({
url: "myURL",
type: "post",
contenttype: 'x-www-form-urlencoded',
data: "grant_type=password&username=" + credentials[0] + "&password=" + credentials[1],
success: function (response) {
var bearerToken = 'Bearer ' + response.access_token;
window.authorizations.add('key', new ApiKeyAuthorization('Authorization', bearerToken, 'header'));
},
error: function (xhr, ajaxoptions, thrownerror) {
alert("Login failed!");
}
});
});