OneLogin Login API的正确流程是什么

问题描述 投票:1回答:1

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

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

我不太确定如何处理会话令牌。我怀疑我可能必须创建一个会话(https://developers.onelogin.com/api-docs/1/users/create-session-via-token)但似乎使用不同的URL。

有任何想法吗?

更新:

这是我用于最后一步的代码。我传入上一步中获得的会话令牌。

/** 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

我这意味着最后一次调用由于某种原因失败了,我被重定向回到登录页面。

api authentication onelogin
1个回答
1
投票

你怀疑是对的。

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

© www.soinside.com 2019 - 2024. All rights reserved.