如何使用WSO2持久化外部Idp生成的用户访问令牌是

如何使用WSO2持久化外部Idp生成的用户访问令牌是,wso2,wso2is,wso2-am,Wso2,Wso2is,Wso2 Am,我有以下要实现的用例: 用户应该能够通过外部IDP的授权\代码授权流登录到WSO2 Identity Server中配置的服务提供商->通过添加外部IDP并将其配置为服务提供商中的联邦身份验证器,实现了此要求 登录后,我们还希望保留外部IDP的用户访问令牌。因此,我们可以调用外部用户特定的API。尝试了以下方法: 试图在WSO2 API管理器中发布外部API,但为了访问外部API/资源,我们需要当前用户的访问令牌。因为我们可以配置客户端凭据/资源所有者密码授权类型,这将授权应用程序或特定用户。但

我有以下要实现的用例:

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

登录后,我们还希望保留外部IDP的用户访问令牌。因此,我们可以调用外部用户特定的API。尝试了以下方法:

  • 试图在WSO2 API管理器中发布外部API,但为了访问外部API/资源,我们需要当前用户的访问令牌。因为我们可以配置客户端凭据/资源所有者密码授权类型,这将授权应用程序或特定用户。但是我们的用例并不局限于特定的用户
  • 我想知道如何利用WSO2 IS和WSO2 API Manager(仅在需要时)实现我的需求

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

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

    此由WSO2代表用户获得的accesstoken将保存到OIDC出站连接器中的AuthenticationContext中。联合身份验证成功后,Identity Server将发布会话创建事件。因此,您可以编写一个事件处理程序,并在创建事件时侦听此会话。然后,您可以使用EventHandler从身份验证上下文中获取accesstoken

    事件处理程序上的文档


    请参阅此实现,以编写自定义事件处理程序来侦听会话\u CREATE事件

    您想将用户访问令牌保存在何处?。应将其保存在用户空间?下?。您从何处调用apim中发布的API?@anuu_online最初计划将其作为WSO2生成的访问令牌中的声明之一。但这将有安全问题的权利。所以我在寻找可能的选择。目前API没有在apim中发布。我不清楚完整的工作流程。您的应用程序是浏览器SPA还是本机/Web服务?如果API是通过APIM公开的,那么您必须使用相应的密钥管理器来验证访问令牌。例如,如果访问令牌由is生成,则使用is密钥管理器。您正在使用的外部IDP是什么?如果是OKTA,apim将提供开箱即用的密钥管理器。@anuu_online我们的应用程序是一个浏览器SPA(ASP.NET MVC),它已作为服务提供商添加。我们已经与ADP集成,因此我们提供了使用ADP(外部IDP)登录选项。目前,我们正在从Asp.Net Identity Server迁移到WSO2。早些时候,我们使用持久化这两个令牌(Asp.Net Idp和Adp访问令牌)。因此,可以使用ADP访问令牌调用相应的ADP API。如果需要,我计划在API管理器中发布ADP API,该API可以使用IS_令牌调用,该令牌可以在内部生成当前用户的ADP访问令牌并调用ADP API。因此,我可以通过从自定义事件处理程序传递此访问令牌来调用我们的后端API??是的。检查获取的accesstoken是否具有所需的作用域和权限。您可以从验证器更改作用域