如何使用Keycloak restendpoint获取用户在Keycloak中的最后登录会话详细信息?
builder.append(OAuth2Constants.AUDIENCE+"="+clientId+"&");
builder.append(OAuth2Constants.GRANT_TYPE+"="+OAuth2Constants.UMA_GRANT_TYPE+"&");
headers.put("Content-Type", "application/x-www-form-urlencoded");
headers.put("Authorization", "Bearer "+accessToken);
//String keycloakURL = keyCloakCFGBean.getCreateRefreshSession();
String keycloakURL="http://10.10.8.113:10004/auth/realms/{realm}/protocol/openid-connect/token";
keycloakURL = keycloakURL.replace("{realm}", realmName);
URL url = new URL(keycloakURL);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setUseCaches(false);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
if (headers != null && headers.size() > 0) {
Iterator<Entry<String, String>> itr = headers.entrySet().iterator();
while (itr.hasNext()) {
Entry<String, String> entry = itr.next();
httpURLConnection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
outputStreamWriter = new OutputStreamWriter(httpURLConnection.getOutputStream(), StandardCharsets.UTF_8);
outputStreamWriter.write(builder.toString());
outputStreamWriter.flush();
所以这里有几个场景。所有这些信息都假定您在身份验证/授权请求的报头中发送了适当的承载令牌,并要求您在Keycloak领域中具有足够的管理权限。
我没有详细说明您用特定语言编写的精确代码,但希望说明清楚地说明了您需要代码做什么。
届会
所有登录
然而,我怀疑您真正想要的是查看Keycloak中存储的所有信息中的最后一次登录,而不仅仅是活动的用户会话,因此您需要为此查找领域事件。请注意,Keycloak只存储一定时间的事件,所以如果它的时间比这个时间长,那么您将找不到任何条目。您可以在领域管理控制台的事件配置页中更改事件的存储时间。
要获取所有领域事件,您可以调用这里提到的endpoint:https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_getEvents(如果链接不能直接找到,请搜索“get events返回所有事件,或者根据此处列出的URL查询参数筛选它们”)。
您需要根据“type”筛选结果(即,只有“login”类型的事件),如果要检查特定用户,还需要根据该用户帐户的ID在userid
上筛选结果。
您可以作为请求的一部分执行这两种筛选,以节省获取事件的完整列表并在客户端对其进行筛选的时间。若要在请求中进行筛选,请执行以下操作:
https://{server}/auth/admin/realms/{realm}/events?type=login&user={id}
然后,可以从结果JSON中获得time
属性值最高的结果,该属性表示登录事件。time
属性将再次是自1/1/1970以来的UNIX毫秒时间,因此一旦有了它,您可以再次将其转换为适合您的格式。
希望对你有帮助!
问题内容: 我尝试了这个:当isSessionValid getDetails直接否则else facebook.authorize,然后在onActivityResult中获取getDetails 当我的系统上安装了Facebook应用程序时,此方法工作正常。但是,如果未安装,我将获得一个Web视图以输入facebook凭据,并在logcat中显示登录成功,但是没有调用getDetails块。
我是Spring MVC和Spring Security的新手。我已经使用Spring Security和MVC执行了登录和注册功能。我找不到任何会话管理的方法。 我想访问所有页面上的一些用户信息,如(电子邮件,姓名,id,角色等)。我想将这些保存到会话对象中,这样我就可以在任何页面上获取这些内容。 我在Spring的会议得到以下方式 但是从这个返回的对象中,我只能得到用户名和密码的详细信息。 但
以下是我希望通过REST API从Keycloak检索的参数: 领域名称 领域ID 用户名 电子邮件 名字 已启用用户 是否有人使用REST API从keycloak获取这些细节,请分享REST API URL细节。
我有一个struts2应用程序。在我的应用程序中,我使用 这边走。 提前致谢
嗨,我尝试用InMemoryDao获取userDetailsService。但是我得不到,我试过@Autowired,@ Inject(userdailsservice,InMemoryDaoImpl,InMemoryManager...)但是我不能让它工作。 有公共类安全扩展WebSecurityC 只尝试了WebSecurityCon