OneLogin Login API的正确流程是什么?

时间:2017-03-06 13:57:02

标签: api authentication onelogin

我正在忙着编写测试工具来验证我正在开发的REST API。在正常使用中,我的REST API将由OneLogin保护和验证的Web应用程序使用。因此,在我可以调用自己的函数之前,我的测试工具必须使用OneLogin进行身份验证。由于我的测试工具没有浏览器,因此我很难理解登录API的正确工作流程。到目前为止,我已经:

  1. 使用客户端ID和密钥(https://developers.onelogin.com/api-docs/1/oauth20-tokens/generate-tokens
  2. 请求身份验证令牌
  3. 使用身份验证令牌,子域,用户名和密码(https://developers.onelogin.com/api-docs/1/users/create-session-login-token
  4. 申请会话令牌

    我不太确定如何处理会话令牌。我怀疑我可能需要创建会话(https://developers.onelogin.com/api-docs/1/users/create-session-via-token),但似乎使用的是其他网址。

    有什么想法吗?

    更新

    以下是我在最后一步使用的代码。我传入上一步中获得的会话令牌。

    /** see https://developers.onelogin.com/api-docs/1/users/create-session-via-token */
    public void createSession(String sessionToken) {
        HttpPost httpPost = new HttpPost("https://admin.us.onelogin.com/session_via_api_token");
        List<NameValuePair> postParameters = new ArrayList<>();
    
        postParameters.add(new BasicNameValuePair("session_token", sessionToken));
    
        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
            HttpEntity entity = new UrlEncodedFormEntity(postParameters);
    
            httpPost.setEntity(entity);
    
            HttpResponse response = httpClient.execute(httpPost);
            int status = response.getStatusLine().getStatusCode();
    
            System.out.println(status);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    返回的状态代码为302,响应标头包含Location: https://<my-company>.onelogin.com

    我认为这意味着最后一次通话因某种原因失败了,我被重定向回登录页面。

1 个答案:

答案 0 :(得分:1)

你怀疑是对的。

基本上,在您的服务器发出令牌的反向通道请求后,您必须通过front channel(用户的浏览器)关闭令牌,这样您就可以建立会话,获取cookie等等......使用session_via_api_token'端点'(与首先获取令牌的API完全不同)