使用Swagger和Auth0

时间:2016-07-20 16:13:55

标签: playframework swagger swagger-ui auth0

我试图将Swagger与Auth0一起使用。 我目前正在使用ApiFirstHand和Swagger-ui来测试我的api。

从这个example.yaml开始,我们可以看到getUserTodos需要user, admin:org, admin:public_key范围。

这是securityDefinitions:

securityDefinitions:
  internalOAuth:
    type: oauth2
    scopes:
      user: Grants read/write access to profile info only.
      admin:org: Fully manage organization, teams, and memberships.
      admin:public_key: Fully manage public keys.
    flow: implicit
    # we use a single API here to issue token (for SwaggerUI)
    authorizationUrl: http://localhost:9000/example/token
    # and to validate it later
    x-token-validation-url: http://localhost:9000/example/token

我的问题是,如果我想使用Auth0而不是internal0Auth,那么我的用户在Auth0中的元数据和我的 securityDefinitions in example.yaml 应该是什么? ? 是否可以在其上使用Swagger-UI?

我试过

securityDefinitions:
  auth0:
    type: oauth2
    scopes:
      openid: Grants access to user_id.
      read:task: Grants read access to task
    flow: accessCode
    authorizationUrl: https://test.eu.auth0.com/authorize
    tokenUrl: https://test.eu.auth0.com/userinfo
    x-token-validation-url: https://test.eu.auth0.com/userinfo

 "user_metadata": {
        "admin:org": true,
        "admin:public_key": true,
        "openid": true
    }

1 个答案:

答案 0 :(得分:0)

internalOAuthauth0只是名称,然后引用到API调用的security属性的定义中。从某种意义上说,您可以按照自己喜欢的方式命名,然后在API调用定义中使用正确的名称。

在你的情况下,它可能会是这样的:

security:
  - auth0:
    - openid
    - admin:org
    - admin:public_key

securityDefinitions:
  auth0:
    type: oauth2
    scopes:
      openid: Grants access to user_id
      admin:org: Fully manage organization, teams, and memberships.
      admin:public_key: Fully manage public keys.
    flow: accessCode
    authorizationUrl: https://test.eu.auth0.com/authorize
    tokenUrl: https://test.eu.auth0.com/userinfo
    x-token-validation-url: https://test.eu.auth0.com/userinfo
paths:
  /some/url:
    get:
      description: Returns something
      summary: cool API endpoint
      security:
        - auth0:
            - admin:org

在不了解您的要求的情况下很难完全定义它,我认为看看swagger规范可能会有所帮助:

Security Definitions Object

Security Requirement Object

Swagger界面应该可以使用,您可以将security.api.yaml移动到conf文件夹并取消注释routes文件中的第33行

来试用它