我有单独的Dotnet Web Service API来验证用户。我如何在WSO2 API Manager中配置它?
我已经用外部IDP(Keycloak)配置了WSO2 API Manager。这就是我想要的,或者可以用不同的方式实现。
如果你正在寻找一种方法来替换你的用户商店(LDAPADJDBC),用你的Dotnet服务,你可能想写一个新的自定义用户商店管理器,扩展你的Dotnet服务。CarbonRemoteUserStoreManger 类。在那里,你应该调用你的自定义API来验证、检索用户。然后,你可以用你的应用程序添加一个secondaryprimary用户存储。自定义用户店长 的实现。
如果你想把你的Dotnet服务配置成API Manager服务器中的Federated IdP,你可能需要写一个 "Federated IdP"。自定义联合认证器 来与你的Dotnet服务进行通信以验证用户。在这里你应该覆盖 initiateAuthenticationRequest
和 processAuthenticationResponse
.
根据问题的新背景编辑答案。
为了与外部(Dotnet服务)生成或验证令牌,WSO2需要事先知道该服务的服务合同。如何获取这些信息到WSO2 APIM服务器,是通过编写一个扩展到WSO2 APIM服务器的Key Manger服务。
默认情况下,WSO2 APIM已经实现了与自己的Key Manager组件和WSO2 Identity Server对话。但是您需要编写逻辑(请求响应模板)来验证您的dotnet服务的tokens。这是官方的 文件 为这。这两篇Medium的文章也是写的这个主题。
基本上,你需要为上述接口写一个简单的java扩展项目,这样WSO2就知道如何与你的服务对话。A 例行 写给 Okta 作为一个密钥管理器,这里指出。
关于你关心的验证两种token类型的问题。
是的,可以使用上面描述的自定义密钥管理器接口。一旦你在API管理器端收到令牌,如果你能从你的Java逻辑中分辨出令牌是由Dotnet服务还是由WSO2本身发出的(可能是令牌的长度),那么你的逻辑应该将验证请求分别转到WSO2默认的密钥验证服务(调用 super()
)或对你的Dotnet服务调用。如果你光看这两个令牌无法区分,那么你可以同时尝试两个服务器,检查其中一个能否验证。(这里面有一个安全漏洞)。
希望能帮到你。