无法从Thinktecture授权服务器获取令牌

时间:2015-03-03 21:58:26

标签: oauth oauth-2.0 thinktecture-ident-server thinktecture-ident-model thinktecture

我无法从Thinktecture授权服务器获取访问令牌。成功获取授权代码后,我尝试向令牌端点发出POST请求,但始终使用此响应获得400 Bad Request: message:“{”error“:”invalid_client“}”

我的要求是: 发布到https://host/authz/users/oauth/token 请求机构: { “代码”: “grant_code_received_from_previous_request”, “CLIENT_ID”: “myclient”, “grant_type”: “authorization_code”, “client_secret”: “mysecret”}

我的客户端在授权服务器中正确设置。我的客户ID和秘密是正确的;它们与我之前请求中的授权代码使用的值相同(/ users / oauth / authorize)。

对此“invalid_client”问题有什么想法吗?除“invalid_client”之外,响应中没有其他信息。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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")

希望它有所帮助!

答案 2 :(得分:-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