2

Je ne parviens pas à obtenir un jeton d'accès auprès du Thinktecture Authorization Server. Après avoir obtenu avec succès le code de subvention, je tente une demande POST au point final jeton, mais toujours obtenir 400 Bad Request avec cette réponse: message: "{ "erreur": "invalid_client"}"Impossible d'obtenir le jeton à partir du serveur d'autorisation Thinktecture

Ma demande était: POST à ​​https://host/authz/users/oauth/token demande corps: { "code": "grant_code_received_from_previous_request", "client_id": "myclient", "grant_type": "authorization_code", "client_secret": "mysecret"}

Mon client est configuré correctement dans le serveur d'autorisation. Mon identifiant client et mon secret sont corrects. ils sont la même valeur que j'ai utilisée pour le code de subvention dans la demande précédente (/ users/oauth/authorize).

Une idée pour ce problème "invalid_client"? Il n'y a pas d'autre information dans la réponse autre que "invalid_client".

Répondre

3

vous devez envoyer les informations d'identification du client utilisant l'authentification de base HTTP au lieu d'afficher l'ID et le secret dans le corps.

+2

Salut Dominic J'ai ajouté l'authz de base dans l'en-tête, j'utilise également l'extension client de repos Avancé.But toujours le invalid_client. Des idées – Greens

-1

Vous pouvez obtenir plus d'informations sur le fichier de consignation. Jetez un coup d'oeil, vous pouvez vérifier les options de journalisation sur le web.config du serveur d'identité:

<system.diagnostics> 
<!-- simple system.diagnostics logger --> 
<trace autoflush="true" indentsize="4"> 
    <listeners> 
    <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Trace.log" /> 
    <remove name="Default" /> 
    </listeners> 
</trace> 

<!-- can be used with TraceSource logger --> 
<!--<sources> 
    <source name="Thinktecture.IdentityServer" 
      switchValue="Information, ActivityTracing"> 
    <listeners> 
     <add name="xml" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData= "trace.svclog" /> 
    </listeners> 
    </source> 
</sources>--> 

Plus d'informations sur la connexion à: http://identityserver.github.io/Documentation/docs/configuration/logging.html

0

J'ai suivi @leastprivilege conseils et a fait que:

// set up the base64-encoded credentials 
let clientId = "myclientid" 
let clientSecret = "myclientsecret" 

let loginString = NSString(format: "%@:%@", clientId, clientSecret) 
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)! 
let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0)) 

Après qui a créé l'instance de demande comme ceci:

var request = NSMutableURLRequest(URL: myUrl!) 
request.HTTPMethod = "POST" 

// Only these four are required based on the documentation.   
let postString = "grant_type=authorization_code&code=\(code)&redirect_uri=app:/your.redirect.uri" 

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 

request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") 

Hope it helps!