我正在忙着编写一个测试工具来验证我一直在开发的REST API。在正常使用中,我的REST API将由OneLogin保护和验证的Web应用程序使用。因此,在我可以调用自己的函数之前,我的测试工具必须使用OneLogin进行身份验证。由于我的测试工具没有浏览器,我很难理解登录API的正确工作流程。到目前为止我有:
我不太确定如何处理会话令牌。我怀疑我可能必须创建一个会话(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
。
我这意味着最后一次调用由于某种原因失败了,我被重定向回到登录页面。
你怀疑是对的。
基本上,在您的服务器发出令牌的反向通道请求后,您必须通过front channel
(用户的浏览器)关闭令牌,以便您可以使用session_via_api_token
'端点'建立会话,获取cookie等...(这是与首先获得令牌的API完全不同的一种类型)