Swagger默认将access_code传递给头文件。是否可以传递id_token?我正在使用swagger.yaml版本2.0记录我的NodeJS REST API
access_code
id_token
swagger.yaml
2.0
s6fujrry1#
是的,这是可能的,即使这不是一个好主意,因为@DalmTo提到。您需要将x-tokenName: id_token添加到API定义中的Google OAuth安全定义中。
x-tokenName: id_token
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以上版本;要在OpenAPI3.0中使用它,您需要SwaggerUI3.25.0+。
x-tokenName
kr98yfug2#
您可以通过在安全配置中设置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令牌进行身份验证。
2条答案
按热度按时间s6fujrry1#
是的,这是可能的,即使这不是一个好主意,因为@DalmTo提到。
您需要将
x-tokenName: id_token
添加到API定义中的Google OAuth安全定义中。**注意:**要在OpenAPI 2.0定义中使用
x-tokenName
,您需要Swagger UI 3.8.12以上版本;要在OpenAPI3.0中使用它,您需要SwaggerUI3.25.0+。kr98yfug2#
您可以通过在安全配置中设置x-tokenName,使Swagger或Nswagg使用不同的令牌(id_token或access_token),如下所示:
这在使用AWS Cognito时非常方便,因为它只使用id令牌进行身份验证。