2016-07-07 2 views
0

J'utilise swashbuckle pour ajouter de la fantaisie à mon projet asp.net mvc web api. Je vois des options pour ajouter OAuth2, mais mon site Web nécessite wsfederation. Comment est-ce que je peux exiger l'authentification pour regarder le swagger ui avec wsfederation?Comment ajouter une authentification à swashbuckle?

GlobalConfiguration.Configuration 
    .EnableSwagger(c => 
    { 
     c.SingleApiVersion("v1", "Services"); 
    }) 
    .EnableSwaggerUi(c => { }); 

Répondre

1

authentification dans le fichier SwaggerConfig est directement lié à la documentation de votre API, et non la mise en œuvre effective, pour ainsi dire. Donc, si vous utilisez ce qui suit dans votre swaggerConfig:

c.OAuth2("oauth2") 
       .Description("OAuth2 Implicit Grant") 
       .Flow("implicit") 
       .AuthorizationUrl("http://petstore.swagger.io/oauth/dialog") 
       .Scopes(scopes => 
       { 
        scopes.Add("read:pets", "read your pets"); 
        scopes.Add("write:pets", "modify pets in your account"); 
       }); 

Cela générerait la securitydefinition suivante dans le fichier JSON Swagger

securityDefinitions: 
    petstore_auth: 
    type: oauth2 
    authorizationUrl: 'http://petstore.swagger.io/oauth/dialog' 
    flow: implicit 
    scopes: 
     'write:pets': modify pets in your account 
     'read:pets': read your pets 

Pour répondre

Comment puis-je exiger une authentification à voir le swagger ui avec wsfederation?

il suffit d'ajouter l'authentification à l'échelle mondiale dans le fichier WebApiConfig.cs, quelque chose de similaire à ce qui suit (si vous utilisez un MessageHandler ou filtre)

config.Filters.Add(new WSFederationAuthentication()); 

Consulter la documentation Swagger est directement liée WebAPI.

Vous pourriez avoir des problèmes cependant, comme Swagger obtient le côté du client docs.