迅速获得Google OAuth 2.0授权

时间:2019-07-11 05:41:53

标签: oauth-2.0 swagger google-oauth swagger-2.0

Swagger默认将access_code传递给标题。是否可以通过id_token

我正在使用swagger.yaml版本2.0

记录我的NodeJS REST API。

enter image description here

2 个答案:

答案 0 :(得分:1)

是的,即使不是mentioned by @DalmTo也不是个好主意。

您需要在API定义的Google OAuth安全定义中添加x-tokenName: id_token。 Swagger UI 3.8.12+支持x-tokenName扩展名,并且仅适用于OpenAPI 2.0定义。

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:
      ...

答案 1 :(得分: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令牌进行身份验证。