2016-07-20 8 views
0

Ich versuche, Swagger mit Auth0 zu verwenden. Ich verwende derzeit ApiFirstHand und Swagger-ui, um meine API zu testen.Verwenden von Swagger mit Auth0

Beginnend mit diesem example.yaml, können wir sehen, dass getUserTodos erfordert user, admin:org, admin:public_key Bereiche. Hier

ist die 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 

Meine Frage ist, was soll meine Benutzer Metadaten in Auth0 und meine securityDefinitions in example.yaml, wenn ich Auth0 anstelle des internal0Auth verwenden? Ist es möglich Swagger-UI zu benutzen?

I

versucht
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 

mit

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

Antwort

0

Die internalOAuth oder auth0 sind nur Namen, die dann in die Definition der security Eigenschaft des API-Aufruf verwiesen. In gewissem Sinne können Sie es beliebig benennen, verwenden Sie dann einfach den richtigen Namen in der API-Call-Definition.

In Ihrem Fall wahrscheinlich es so aussehen:

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 

Es ist schwer, es genau zu definieren, ohne Ihre Anforderungen zu wissen, ich denke, es könnte hilfreich sein, einen Blick auf Prahlerei Spezifikation zu nehmen:

Security Definitions Object

Security Requirement Object

Die Swagger UI damit arbeiten sollten, können Sie es versuchen o ut durch den security.api.yaml in den conf Ordner und Auskommentierung Linie 33 in der routes Datei bewegen

+0

von Auth0, ich meine das Saas => https://auth0.com/docs/api/authentication Es sieht aus wie sie haben eine Art von "accessCode" und "impliziten" Flows, aber der Begriff "Scope" scheint zwischen Swagger und Auth0 nicht übereinzustimmen. –

+0

Ich war nicht über Aut0 bewusst, sorry. Ich denke, der beste Weg, um mir zu helfen, ist, ein weiteres Beispiel in einem ersten Aktivierungsschablone zu erstellen. Würde es Ihnen etwas ausmachen, ein Problem [hier] (https://github.com/zalando/play-swagger-service) zu erstellen? –