3

我无法从 Thinktecture 授权服务器获取访问令牌。成功获得授权代码后,我尝试向令牌端点发出 POST 请求,但始终收到 400 Bad Request 并带有以下响应: 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" :“我的秘密”}

我的客户端已在授权服务器中正确设置。我的客户 ID 和密码正确;它们与我在上一个请求(/users/oauth/authorize)中用于授权代码的值相同。

对这个“invalid_client”问题有任何想法吗?除了“invalid_client”之外,响应中没有其他信息。

4

3 回答 3

3

您需要使用 http 基本身份验证发送客户端凭据,而不是在正文中发布 Id 和 secret。

于 2015-03-05T18:53:49.653 回答
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")

希望能帮助到你!

于 2016-09-25T08:43:18.397 回答
-1

您可以获得有关日志文件的更多信息。看一下,你可以在 Identity Server 的 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

于 2015-03-05T12:02:33.053 回答