Невозможно получить токен с сервера авторизации Thinktecture
Я не могу получить токен доступа с сервера авторизации Thinktecture. После успешного получения кода гранта я пытаюсь сделать POST-запрос к конечной точке токена, но всегда получаю 400 неверных запросов с таким ответом: message: "{" error ":" invalid_client " }"
Мой запрос был: POST к https://host/authz/users/oauth/token тело запроса токена: {"code": "grant_code_received_from_previous_request", "client_id": "myclient", "grant_type": "authorization_code", "client_secret":"мой секрет" }
Мой клиент правильно настроен на Сервере авторизации. Мой идентификатор клиента и секрет верны; это то же значение, которое я использовал для кода предоставления в предыдущем запросе (/users/oauth/authorize).
Любая идея для этой проблемы "invalid_client"? В ответе нет другой информации, кроме "invalid_client".
3 ответа
Вам нужно отправлять учетные данные клиента, используя базовую аутентификацию http вместо того, чтобы публиковать Id и secret в теле.
Я последовал совету @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")
Надеюсь, поможет!
Вы можете получить более подробную информацию о файле регистрации. Взгляните на это, вы можете проверить параметры ведения журнала на web.config Identity Server:
<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