Oauth2参数匹配

时间:2018-03-14 16:58:50

标签: rest oauth-2.0

我是新来的休息和oauth。我获得开发人员访问我律师事务所的计费软件的权限。我收到了一个带有用户名和密码的“开发者帐户”,我注册了我的“应用程序”,此时我所拥有的所有信息的总和如下:

  1. API密钥
  2. 密钥
  3. 用于注册应用的用户名(电子邮件地址)
  4. 用于注册应用的密码
  5. 我提出的应用名称
  6. 我提供的重定向网址
  7. “文档”说我需要在请求正文中传递以下URL编码的行,并且所有参数都是必需的:

    CLIENT_ID = {CLIENT_ID}&安培; client_secret = {client_secret}&安培; grant_type = {grant_type}&安培;代码= {代码}&安培; REDIRECT_URI = {REDIRECT_URI}

    我在弄清楚什么是什么时遇到了一些麻烦。我相信 client_id client_secret 是我在注册应用时提供的 api密钥密钥。这听起来不错吗?

    我不知道要使用哪种授权类型。

    我不知道“代码”是什么或在哪里获得它。

    开发人员似乎没有给我所需的所有信息,但我可能错了。

1 个答案:

答案 0 :(得分:0)

不,它看起来不够信息!是API密钥和秘密声音,如client_idclient_secret

通常,授权类型取决于您正在开发的应用程序类型。最常用的是:

  • 使用user = Authorisation Code Grant
  • 的Web App
  • Javascript Browser App = Implicit Grant
  • Native / Mobile App = Authorisation Code使用PKCE授予。
  • 无需用户上下文的Web App / API = Client Credentials 格兰特。

根据您提供的信息,我不确定最适合您,但这里是使用几种授权类型获取令牌的常用协议示例:

  

授权代码授权:

所以你要打电话给律师事务所的授权服务器:

1) GET /authorize?response_type=code&client_id=yourclientid
            &redirect_uri=https%3A%2F%2Fyourappserver%2Ecom%2Fcallback HTTP/1.1

您将获得一个发送回重定向端点的代码,然后您将该代码发送到auth服务器的/ token端点。

2)  POST /token HTTP/1.1
         Host: server.yourlawfirm.com
         Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
         Content-Type: application/x-www-form-urlencoded

         grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
         &redirect_uri=https%3A%2F%2Fyourappserver%2Ecom%2Fcallback

请注意,在此示例中,基本身份验证代码包含客户端ID和密码,但通常会在请求主体中发送,例如。

2)  POST /token HTTP/1.1
         Host: server.yourlawfirm.com
         Content-Type: application/x-www-form-urlencoded

         grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
         &redirect_uri=https%3A%2F%2Fyourappserver%2Ecom%2Fcallback
         &client_id=yourclientid&client_secret=yoursecret

然后授权服务器会从步骤2)返回一个访问令牌

如果您的应用程序要与律师事务所的计费软件交谈而不需要用户/上下文,那么您将使用客户端凭据授权。

  

客户资格补助金。

该协议的一个例子是致电律师事务所的Auth服务器:

 POST /token HTTP/1.1
 Host: server.yourlawfirm.com
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
 Content-Type: application/x-www-form-urlencoded

 grant_type=client_credentials

这会返回一个访问令牌。

客户端ID和密码再次包含在基本的auth标头中,但可能是您可以在我之前显示的请求正文中提供它们。

e.g。

 POST /token HTTP/1.1
 Host: server.yourlawfirm.com 
 Content-Type: application/x-www-form-urlencoded

 grant_type=client_credentials&client_id=yourclientid&client_secret=yoursecret

此信息基于OAuth2.0 specification