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