WSO2 API 管理器 - 从 API 客户端验证用户

WSO2 API Manager - Authenticate user from API client

我正在开发一组通过 WSO2 API 管理器公开为 REST 的微服务。

现在,我想在 Angular 前端调用这些服务。处理用户身份验证和授权的最佳方式是什么?

我发现可以按照所述通过 OAuth2 密码授予来完成 here?

当用户登录时,用户凭据将被发送到特定的 WSO2 APIM 端点 (/token),它会验证、生成令牌,此令牌将在 header 中发送以供后续使用来电。

这是处理这种情况的最佳方法吗?

提前致谢,

如您的问题所述,https://apim.docs.wso2.com/en/next/learn/api-security/oauth2/grant-types/password-grant/ 此方法只有在您拥有 资源所有者的 用户名和密码时才有效。

举个例子,假设您已经发布了 APIs 并在 WSO2 商店中创建了一个用户(资源所有者)。此用户使用该应用程序订阅了 API。该应用程序将具有客户端 ID 和密码,用于生成 OAuth2.0 令牌。此令牌将用于调用 APIs.

现在在您的 angular 项目中,一种方法是 硬编码 base64(clientid:clientsecret) 并调用令牌 API 来生成 OAuth2 .0 不记名令牌。使用生成的令牌调用 WSO2 上的 APIs。为保护您的 API 免受攻击,请使用基于 IP

速率限制

现在考虑另一种情况,如果您希望用户先进行身份验证,然后使用密码授予类型(使用实际用户的用户名和密码)为该用户生成 JWT token,并使用该 JWT 生成OAuth2.0 Bearer token 将用于调用 APIs.

第二种情况执行的步骤:

  1. 在注册期间(来自Angular),在 WSO2 身份服务器中内部载入用户。 (同样有一个WSO2 API)
  2. 注册后,通过验证用户名和密码从身份服务器生成 JWT 令牌。 (同样,WSO2 API 在那里)
  3. 现在使用此 JWT 令牌,从 WSO2 APIM
  4. 生成 OAuth2.0 令牌
  5. 使用此令牌调用 APIs

第二种方法是使用WSO2作为网关进行用户到服务认证和授权的理想方法,而第一种方法主要侧重于服务到服务的认证和授权

希望这能回答您的问题

参考Link:https://medium.com/wso2-learning/how-to-protect-your-apis-with-self-contained-access-token-jwt-using-wso2-api-manager-and-wso2-75673d8a4686