如何在单页 Web 应用程序中使用 wso2 API Manager 和 wso2 Identity Server

How to use wso2 API Manager and wso2 Identity Server with a single page web application

我构建了一个 angularjs 客户端和一个 spring 启动应用程序。后端提供了一些虚拟 REST-APIs。现在我想集成 wso2 Api 管理器来管理我的 REST APIs 和 wso2 身份服务器来保护它。

所以我将 pre-packaged 身份服务器与 API 管理器一起使用。如果用户通过重定向到 WSO2 API 管理器服务器进入 webapp,我就可以授权他: window.location.href = https://localhost:9445/oauth2/authorize

这样我就可以看到wso2身份服务器的登录表单了。输入我的凭据后,我将使用一个名为 code.

的新 url 参数重定向回我的 webapp

在我读到的文档中,我必须使用新收到的 code 发出新请求才能获得访问令牌。这就是问题所在。我需要发送一个 Authorization: Basic header,其中值是 client_id:client_secret 的 base64 编码。据我所知,不能确定将客户端密钥保存在 javascript 代码中。

此外,我不太确定我是否在 wso2 中使用了正确的流程。是否有清晰的教程/示例,说明如何将 wso2 用于 Web 应用程序。

我正在使用 wso2 Api Manager 1.10.0wso2 Identity Server 5.1.0.

编辑:我发现我需要为浏览器/javascipt 应用程序使用隐式流。

我找到了答案。在浏览器环境中,我必须使用 "implicit" 流程。这样我就可以从 api 管理服务器获取访问令牌。