2

Я не могу получить токен доступа с сервера авторизации Thinktecture. После успешного получения кода гранта, я пытаюсь сделать запрос POST для маркеров конечной точки, но всегда получите 400 Bad Request с этим ответом: сообщения: «{„ошибка“:„invalid_client“}»Невозможно получить токен от сервера авторизации Thinktecture

Моего запрос был: Пост в https://host/authz/users/oauth/token тело запроса: { "код": "grant_code_received_from_previous_request", "client_id": "myclient", "grant_type": "authorization_code", "client_secret": "MySecret"}

Мой клиент правильно настроен на сервере авторизации. Мой идентификатор клиента и секрет правильны; они являются тем же значением, которое я использовал для кода предоставления в предыдущем запросе (/ users/oauth/authorize).

Любая идея для этой проблемы «invalid_client»? В ответе нет другой информации, кроме «invalid_client».

ответ

3

вам нужно отправить учетные данные клиента, используя HTTP-аутентификацию вместо отправки идентификатора и секретности в теле.

+2

Hi Dominic Я добавил базовый authz в заголовок, я также использую расширение расширенного клиента клиента. Но все еще получаю invalid_client. Есть идеи – Greens

-1

Вы можете получить более подробную информацию о файле регистрации. Взгляните на него, вы можете проверить параметры регистрации на web.config в идентификации сервера

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

Более подробная информация о регистрации по адресу: http://identityserver.github.io/Documentation/docs/configuration/logging.html

0

Я последовал @leastprivilege совета и сделал это:

// 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)) 

После этого создается экземпляр запроса, как это:

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") 

Надеется, что это помогает!

Смежные вопросы