ToB企服应用市场:ToB评测及商务社交产业平台

标题: keycloak~关于社区登录的过程阐明 [打印本页]

作者: 南七星之家    时间: 2024-8-8 14:42
标题: keycloak~关于社区登录的过程阐明
keycloak将第三方登录(社区登录)进行了封装,大体主要会经历以下三个过程:
回调地址的扩展

在社区回调地址上添加loginType参数

  1. private Response finishBrokerAuthentication(BrokeredIdentityContext context, UserModel federatedUser,
  2.                                               AuthenticationSessionModel authSession, String providerId) {
  3.     authSession.setAuthNote(AuthenticationProcessor.BROKER_SESSION_ID, context.getBrokerSessionId());
  4.     authSession.setAuthNote(AuthenticationProcessor.BROKER_USER_ID, context.getBrokerUserId());
  5.     this.event.user(federatedUser);
  6.     context.getIdp().authenticationFinished(authSession, context);
  7.     authSession.setUserSessionNote("loginType", providerId);
  8.     ...
  9. }
复制代码
  1.   code = OAuth2CodeParser.persistCode(session, clientSession, codeData);
  2.   redirectUri.addParam(OAuth2Constants.CODE, code);
  3.   // TODO: 登录成功后,将用户登录方式追加到回调页面上
  4.   if (authSession.getUserSessionNotes().containsKey("loginType")) {
  5.     String loginType = authSession.getUserSessionNotes().get("loginType");
  6.     redirectUri.addParam("loginType", loginType);
  7.   }
复制代码
FEDERATED_IDENTITY_LINK的美满

  1. {
  2.   "time": 1723099954167,
  3.   "type": "FEDERATED_IDENTITY_LINK",
  4.   "realmId": "fabao",
  5.   "clientId": "pkulaw",
  6.   "userId": "e62a4ea6-c1c3-4f10-9136-8ceebba45339",
  7.   "sessionId": null,
  8.   "ipAddress": "111.198.143.194",
  9.   "error": null,
  10.   "details": {
  11.     "identity_provider": "carsi",
  12.     "identity_provider_identity": "student@pku.edu.cn",
  13.     "code_id": "6668189e-4cd6-488e-8582-d28b87636b41",
  14.     "username": "phone202408081431274571"
  15.   }
  16. }
复制代码
扩展消息,必要按以下步调操作

  1.   // 社区绑定现在有用户后,发的事件FEDERATED_IDENTITY_LINK,我们需要添加一些扩展信息
  2.   event.detail(Details.IDENTITY_PROVIDER, providerId);
  3.   event.detail(Details.IDENTITY_PROVIDER_USERNAME, context.getBrokerUserId()); //event.detail(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername());
  4.   event.detail("identity_provider_username", context.getUsername());
复制代码
  1. {
  2.   "time": 1723101725866,
  3.   "type": "FEDERATED_IDENTITY_LINK",
  4.   "realmId": "fabao",
  5.   "clientId": "pkulaw",
  6.   "userId": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
  7.   "sessionId": null,
  8.   "ipAddress": "10.10.80.81",
  9.   "error": null,
  10.   "details": {
  11.     "identity_provider": "carsi",
  12.     "identity_provider_username": "student@pku.edu.cn",
  13.     "identity_provider_identity": "6zETJRPrWiBi7B85cCHPoVD7dyI\u003d",
  14.     "code_id": "c344f279-9786-468b-a67e-fecf39c531b0",
  15.     "username": "test"
  16.   }
  17. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4