我使用单独的Dotnet Web服务API对用户进行身份验证。如何使用WSO2应用程序接口管理器进行配置?
我已经使用外部IDP (Keycloak)配置了WSO2应用程序接口管理器。这就是我所期待的,或者可以通过不同的方式来实现。
发布于 2020-05-07 02:17:39
如果您正在寻找将用户存储(LDAP/AD/JDBC)替换为Dotnet服务的方法,则可能需要编写一个新的自定义用户存储管理器来扩展CarbonRemoteUserStoreManger类。在那里,您应该调用您的自定义API来验证和检索用户。然后,您可以使用您的custom user store manager实现添加一个辅助/主要用户存储。
如果您希望在API Manager服务器中将Dotnet服务配置为联邦IdP,则可能需要编写一个Custom Federated Authenticator来与Dotnet服务通信,从而对用户进行身份验证。在这里,您应该重写initiateAuthenticationRequest和processAuthenticationResponse。
在issue上使用新的上下文编辑答案
为了与外部方(Dotnet服务)生成或验证令牌,WSO2需要事先知道该服务的服务契约。如何将信息获取到WSO2 APIM服务器是通过向WSO2 APIM服务器的Key Manger服务编写一个扩展来实现的。
默认情况下,Server具有与其自己的密钥管理器组件和WSO2 Identity WSO2进行对话的实现。但是您需要编写逻辑(请求/响应模板)来使用dotnet服务验证令牌。这是这方面的官方documentation。这两篇中等水平的文章也是在这个主题上写的。
基本上,您需要为上述接口编写一个简单的java扩展项目,以便WSO2知道如何与您的服务对话。这里指出了一个为Okta编写的sample such implementation作为密钥管理器。
关于您对验证这两种令牌类型的关注;
是的,可以使用如上所述的自定义密钥管理器接口。一旦您在API Manager端收到令牌,如果您能够区分令牌是由Dotnet服务还是由WSO2本身从您的Java逻辑发出的(可能是令牌长度),那么您的逻辑应该将验证请求分别转移到WSO2默认密钥验证服务(调用super())或您的Dotnet服务调用。如果您不能仅通过查看来区分这两个令牌,那么您可以尝试两个服务器,以检查其中一个服务器是否可以验证它。(这里面有一个安全漏洞。)
希望这能有所帮助。
https://stackoverflow.com/questions/61597176
复制相似问题