拥有 Google OAuth 2.0 授权的 Swagger
Swagger with Google OAuth 2.0 authorization
Swagger 默认将 access_code
传递给 headers。是否可以通过id_token
?
我正在用 swagger.yaml
版本 2.0
记录我的 NodeJS REST API
是的,这是可能的,尽管这不是一个好主意,因为 。
您需要将 x-tokenName: id_token
添加到 API 定义中的 Google OAuth 安全定义。
swagger: '2.0'
...
securityDefinitions:
google_oauth:
type: oauth2
description: Google OAuth
flow: accessCode
authorizationUrl: https://accounts.google.com/o/oauth2/v2/auth
tokenUrl: https://www.googleapis.com/oauth2/v4/token
x-tokenName: id_token # <-------
scopes:
...
注意:要在 OpenAPI 2.0 定义中使用 x-tokenName
,您需要 Swagger UI 3.8.12+;要在 OpenAPI 3.0 中使用它,您需要 Swagger UI 3.25.0+.
您可以通过在安全配置中设置 x-tokenName 使 Swagger 或 Nswagg 使用不同的令牌(id_token 或 access_token),例如:
services.AddSwaggerDocument(config =>
{
config.PostProcess = document =>
{
document.Info.Title = "API OpenBankWeb";
document.Info.Description = "Uma simples Web API feita em ASP.NET Core consumindo AWS.\nClique nos títulos abaixo para expandir.";
};
config.AddSecurity("oauth2", new NSwag.OpenApiSecurityScheme
{
Type = OpenApiSecuritySchemeType.OAuth2,
ExtensionData = new Dictionary<string, object>
{
{ "x-tokenName", "id_token" }
},
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = _domain + "/oauth2/authorize",
TokenUrl = _domain + "/oauth2/token"
}
}
});
这在使用 AWS Cognito 时非常方便,因为它仅使用 id 令牌进行身份验证。
Swagger 默认将 access_code
传递给 headers。是否可以通过id_token
?
我正在用 swagger.yaml
版本 2.0
是的,这是可能的,尽管这不是一个好主意,因为
您需要将 x-tokenName: id_token
添加到 API 定义中的 Google OAuth 安全定义。
swagger: '2.0'
...
securityDefinitions:
google_oauth:
type: oauth2
description: Google OAuth
flow: accessCode
authorizationUrl: https://accounts.google.com/o/oauth2/v2/auth
tokenUrl: https://www.googleapis.com/oauth2/v4/token
x-tokenName: id_token # <-------
scopes:
...
注意:要在 OpenAPI 2.0 定义中使用 x-tokenName
,您需要 Swagger UI 3.8.12+;要在 OpenAPI 3.0 中使用它,您需要 Swagger UI 3.25.0+.
您可以通过在安全配置中设置 x-tokenName 使 Swagger 或 Nswagg 使用不同的令牌(id_token 或 access_token),例如:
services.AddSwaggerDocument(config =>
{
config.PostProcess = document =>
{
document.Info.Title = "API OpenBankWeb";
document.Info.Description = "Uma simples Web API feita em ASP.NET Core consumindo AWS.\nClique nos títulos abaixo para expandir.";
};
config.AddSecurity("oauth2", new NSwag.OpenApiSecurityScheme
{
Type = OpenApiSecuritySchemeType.OAuth2,
ExtensionData = new Dictionary<string, object>
{
{ "x-tokenName", "id_token" }
},
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = _domain + "/oauth2/authorize",
TokenUrl = _domain + "/oauth2/token"
}
}
});
这在使用 AWS Cognito 时非常方便,因为它仅使用 id 令牌进行身份验证。