如何使用 WSO2 IS

时间:2021-04-20 06:25:35

标签: wso2 wso2is wso2-am

我有以下用例要实现:

用户应该能够通过外部 IDP 的授权代码授权流登录到 WSO2 身份服务器中配置的服务提供者 -> 通过添加外部 IDP 并将其配置为服务提供者中的联合身份验证器来实现此要求。

登录后,我们还想持久化外部IDP的用户access_token。这样我们就可以调用外部用户特定的 API。尝试了以下方法:

  1. 尝试在 WSO2 API 管理器中发布外部 API,但为了访问外部 API/资源,我们需要当前用户的访问令牌。因为我们可以配置客户端凭据/资源所有者密码授权类型,这将授权应用程序或特定用户。但我们的用例不限于特定用户。

WSO2 APIM Endpoint Security Configurations

想知道如何利用 WSO2 IS 和 WSO2 API 管理器(仅在需要时)来实现我的要求。

高度赞赏围绕此要求的任何可能的解决方案。提前致谢。

环境 WSO2 IS -> v5.10.0 WSO2 API 管理器 -> v3.2.0

1 个答案:

答案 0 :(得分:1)

WSO2 代表用户获取的这个访问令牌被持久化到 OIDC 出站连接器中的 AuthenticationContext。 https://github.com/wso2-extensions/identity-outbound-auth-oidc/blob/master/components/org.wso2.carbon.identity.application.authenticator.oidc/src/main/java/org/wso2/carbon/identity/application/authenticator/oidc/OpenIDConnectAuthenticator.java#L486。联合身份验证成功后,Identity Server 将发布 SESSION_CREATE 事件。所以你可以编写一个事件处理程序并监听这个 SESSION_CREATE 事件。然后,您可以使用 EventHandler 从身份验证上下文中获取 accesstoken。

关于事件处理程序的文档

https://is.docs.wso2.com/en/5.12.0/develop/writing-a-custom-event-handler/ https://medium.com/@isurakarunaratne/wso2-identity-server-eventing-framework-32505bcc1600

请参阅此实现以编写自定义事件处理程序以侦听 SESSION_CREATE 事件。 https://github.com/wso2-extensions/identity-inbound-auth-oauth/blob/master/components/org.wso2.carbon.identity.oauth/src/main/java/org/wso2/carbon/identity/oauth2/token/bindings/handlers/TokenBindingExpiryEventHandler.java#L65