我已经使用WSO2 API Manager创建并发布了API。 API客户端通过OAuth2和客户端凭据授予获得访问权限,发送消费者密钥和消费者机密以请求访问令牌。但是现在我需要通过授权代码授予来实现授权。我必须使用WSO2 APIM的client_id和client_secret以及后端应用程序的用户登录表单,而不是WSO2 APIM用户。
任何人都可以告诉它是否可行以及如何实现吗?
WSO2的文档未描述此流程,我发现的所有示例仅描述了WSO2 APIM用户的授权过程(OAuth2,authorization_code)。
答案 0 :(得分:0)
现在我需要通过授权代码授予来实现授权。 我必须使用WSO2 APIM的client_id和client_secret以及后端应用程序的用户登录表单,而不是WSO2 APIM用户。
如果您想使用自己的(应用程序)身份验证表单,最简单的选择是利用password grant type,其中您的应用程序通过后端服务将令牌请求连同应用程序和用户凭据一起发送
使用代码授权,您假设使用授权端点https://gateway:8243/authorize和documentation中所述的参数,并且实际上,当用户尚未通过身份验证时,将使用默认的登录表单
(我还是很想减少不搜索文档的问题)
如果您仍然希望将代码授予类型与自己的身份验证表单一起使用,则可以自定义wso2 api网关的默认登录表单,也可以自定义身份验证器以使用应用程序的表单(这是相当高级的主题,需要配置您自己的实现方式,并且不在问题/答案的范围之内)
答案 1 :(得分:0)
您在这里有2个选项,没有进行任何自定义。
1)如果您的后端具有用户存储,则可以将其配置为APIM的辅助用户存储。然后,您可以使用该用户存储中的任何用户进行身份验证。
请参见https://docs.wso2.com/display/ADMIN44x/Configuring+Secondary+User+Stores
2)如果无法使用上述选项,并且后端IDP支持任何联合SSO协议(例如SAML2或OIDC),则可以使用WSO2 IS配置联合。
请参见https://docs.wso2.com/display/IS550/Single+Sign-On+and+Identity+Federation