jhipster oauth:我如何通过CURL获得令牌

时间:2015-11-13 12:11:58

标签: angularjs curl oauth jhipster

我正在尝试使用jhipster使用oauth2身份验证创建一个新项目。项目示例工作正常,我可以使用angularjs接口登录。但是,当我尝试在命令行中使用CURL检索access_token时,我得到响应:

  

"错误":"未经授权","消息":"凭据错误"

有人可以帮助我如何使用curl来获取access_token吗?

3 个答案:

答案 0 :(得分:1)

你走了!

curl http://127.0.0.1:8080/oauth/token --request POST --insecure --data 
"username=[xxx]&password=[yyy]&grant_type=password&scope=read%20write&    
client_secret=[your app secret]&client_id=[your app id] " -H     
"Authorization:Basic [base64 of your appid:appsecrt]"

答案 1 :(得分:0)

在jhipster中的application.yml中取消注释cors

cors: #By default CORS are not enabled. Uncomment to enable.
        allowed-origins: "*"
        allowed-methods: GET, PUT, POST, DELETE, OPTIONS
        allowed-headers: "*"
        exposed-headers:
        allow-credentials: true
        max-age: 1800

要在离子中使用Oauth2身份验证访问REST API,您必须首先通过

在离子应用程序中获取令牌
$http({
    method: "post", 
    url: "http://192.168.0.4:8085/[Your app name]/oauth/token",
    data:  "username=admin&password=admin&grant_type=password&scope=read write&client_secret=my-secret-token-to-change-in-production&client_id=auth2Sconnectapp",
    withCredentials: true,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Accept': 'application/json',
      'Authorization': 'Basic ' + 'YXV0aDJTY29ubmVjdGFwcDpteS1zZWNyZXQtdG9rZW4tdG8tY2hhbmdlLWluLXByb2R1Y3Rpb24='
      }
  })                
  .success(function(data) {
      alert("success: " + data);
  })
  .error(function(data, status) {
      alert("ERROR: " + data);
  });

这里" YXV0aDJTY29ubmVjdGFwcDpteS1zZWNyZXQtdG9rZW4tdG8tY2hhbmdlLWluLXByb2R1Y3Rpb24 ="等于(clientId +":" + clientSecret) - 所有base64编码

您可以使用https://www.base64encode.org/为自己验证或重新创建

aboue $ http如果成功将给你这个包含令牌及其到期时间的JSON

{
  "access_token": "2ce14f67-e91b-411e-89fa-8169e11a1c04",
  "token_type": "bearer",
  "refresh_token": "37baee3c-f4fe-4340-8997-8d7849821d00",
  "expires_in": 525,
  "scope": "read write"
}

注意" access_token"和" token_type"如果您想访问任何API,这是您必须使用的。我们发送带有API的令牌来访问数据,直到令牌过期,然后我们刷新它或访问新的令牌。 例如

$http({
    method: "get", 
    url: "http://192.168.0.4:8085/auth-2-sconnect/api/countries",
    withCredentials: true,
    headers: {
      'Authorization':' [token_type] + [space] + [access_token] '
      }
  })                
  .success(function(data) {
      alert("success: " + data);
  })
  .error(function(data, status) {
      alert("ERROR: " + data);
  });

答案 2 :(得分:0)

简单的方法:

  
      
  1. 只需在Firefox浏览器中打开FireBug,使用正确的凭据模拟登录过程
  2.   
  3. 在" NET"中找到登录请求。萤火虫标签。
  4.   
  5. 右键单击它,在制作"复制为cURL"
  6.   
  7. 将复制值粘贴到终端中以查看cURL请求中的预期内容:它看起来像verbos但您可以省略某些内容   参数。 @Rajender Saini中的必要参数回答   在那里。
  8.   

一切都已完成。