首页 文章

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

提问于
浏览
2

我无法从Thinktecture Authorization Server获取访问令牌 . 成功获取授权代码后,我尝试向令牌 endpoints 发出POST请求,但始终使用此响应获得400 Bad Request:消息:"{ " 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":"mysecret"}

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

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

3 回答

  • 0

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

  • -1

    我按照@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")
    

    希望能帮助到你!

  • 3

    您可以获取有关日志记录文件的更多信息 . 看一下,您可以检查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

相关问题