oauth - clientId is null while using swagger (both Swashbuckle & Swashbuckle.Core versions are 5.3.2) with Web Api (v5.2.3) -


i trying setup swagger documentation web api uses oauth (using owin middleware 'useoauthauthorizationserver') running issues.

i have done oauth swagger configuration below:

general oauth configuration scopes:

                   c.oauth2("oauth2")                     .description("oauth2 implicit grant")                     .flow("implicit")                     .authorizationurl(configurationmanager.appsettings[constants.authorizationhosturl])                     .tokenurl(configurationmanager.appsettings[constants.tokenurl])                     .scopes(scopes =>                     {                         scopes.add("admin", "admin permission required");                     }); 

enabling oauth selected apis:

         c.operationfilter<assignoauth2securityrequirements>(); 

swagger ui configuration:

         c.enableoauth2support("myportal", "test-realm", "swagger ui"); 

with above code, can view toggle buttons on appropriate end point methods. when click button, displays scopes according above configuration well.

once, select scope , hit authorization button, oauth server fails authenticate because first validates client , seems swagger not passing client-id value. issue detected in oauth server i.e.,

  oauthauthorizationserverprovider::validateclientauthentication(oauthvalidateclientauthenticationcontext context) 

method fails @ below lines:

       if (!context.trygetbasiccredentials(out suppliedclientid, out suppliedclientsecret))         {             //if resource provider taking client credentials forms authentication             context.trygetformcredentials(out suppliedclientid, out suppliedclientsecret);         }          if (context.clientid == null)         {             context.seterror("invalid_clientid", "client_id not set");             return;         } 

oauthvalidateclientauthenticationcontext argument has no information client.

while debugging, in above method, have escaped failure points , validated client.

but still, got below error have no clue:

        unsupported_grant_type 

can me how fix these issues?

i can't see pass client id in. following works me:

try:

c.enableoauth2support("your client id here", "test-realm", "swagger ui"); 

instead of

c.enableoauth2support("myportal", "test-realm", "swagger ui"); 

the assignoauth2securityrequirements operation filter should - need put client id in i've indicated:

public class assignoauth2securityrequirements : ioperationfilter     {       public void apply(operation operation, schemaregistry schemaregistry, apidescription apidescription)       {         var actfilters = apidescription.actiondescriptor.getfilterpipeline();         var allowsanonymous = actfilters.select(f => f.instance).oftype<overrideauthorizationattribute>().any();         if (allowsanonymous)           return;           if (operation.security == null)           operation.security = new list<idictionary<string, ienumerable<string>>>();          var oauthrequirements = new dictionary<string, ienumerable<string>>         {             {"oauth2", new list<string> {"your client id here"}}         };          operation.security.add(oauthrequirements);       }     } 

Comments

Popular posts from this blog

wordpress - (T_ENDFOREACH) php error -

Export Excel workseet into txt file using vba - (text and numbers with formulas) -

Using django-mptt to get only the categories that have items -