【问题标题】:Authentication with WSO2 API Manager使用 WSO2 API 管理器进行身份验证
【发布时间】:2018-02-27 17:42:28
【问题描述】:

我们有一个三层的系统,包括 API 服务器(后端)、客户端网站和最终用户。现在,身份验证发生在 API Server 上,分两种情况完成。在一种情况下,客户端网站直接使用令牌(客户端令牌)调用 API,该令牌(客户端令牌)从基于用户/密码的服务中获取,在另一种情况下,除了最终用户使用客户端网站登录 API 服务器外,但在 API 服务器上进行了身份验证客户网站除外。客户端站点获取另一个名为 Auth Token(用于最终用户调用)的令牌,然后通过发送两个提到的令牌来调用最终用户请求的 API。通过使用 Client 和 Auth Tokens,API Server 检查客户端和最终用户是否分别登录。实体及其关系如图in here

我想使用 API Manager 作为 API 服务器和客户端站点之间的网关,并使用它管理身份验证过程。 如何使用 WSO2 API Manger 实现此场景? 感谢您的回复!

【问题讨论】:

  • 阅读这篇文章有点困难(一些格式和冗长会有所帮助,因为有些部分不是很清楚)。 authentication occurred on API Server other than Client Web Site 是什么意思? ` 通过使用客户端和身份验证令牌` 仅使用单个令牌,但是请求的令牌(使用代码或密码 OAuth 配置文件)绑定到应用程序和用户(两者都必须有效)。只有订阅的应用程序才能使用 API)
  • 客户端网站是一个第三方应用程序,它放置在我们的API服务器和最终用户之间,并且本身没有实现身份验证过程(检查用户和最终用户的通行证)。在一种情况下,当用户登录到客户端网站时,它会将用户传递给 API 服务器。因此,API 服务器检查 U&P 的有效性并创建一个 Auth 令牌并为用户创建一个会话。在此之后,对于来自最终用户的每个请求,API 服务器都会检查会话映射,以确定客户端网站和最终用户是否已登录。由两个令牌执行的检查过程。
  • 而在另一种场景中,客户端网站直接调用API,无需来自最终用户的任何请求。在这种情况下,身份验证令牌不存在!

标签: api authentication wso2 wso2-am


【解决方案1】:

APIM 支持相同的功能。您可以简单地从后端摆脱身份验证登录(或替换为简单的登录)并使用 APIM 身份验证。

APIM 使用 OAuth2。为了满足您的要求,您可以使用不同的授权类型。对于客户端网站,您可以使用客户端凭据授权类型,对于最终用户,您可以使用其他授权类型,例如密码或授权码。

更多详情请阅读:

https://docs.wso2.com/display/AM210/Quick+Start+Guide https://docs.wso2.com/display/AM210/Token+API

【讨论】:

  • 感谢您的回复。但我想使用 APIM 生成和处理第二个令牌(Auth Token),而不是将其传递给 API Server 并对其进行处理。我可以这样做还是更好地将身份验证令牌传递给后端?另外我更新了我的帖子,请参阅它以获取更多信息。谢谢!
  • @Bhathiya 我道歉,我编辑了错误的答案(你的而不是我的),请拒绝编辑
【解决方案2】:

扩展上一个答案..

如果后端在 API 管理器后面(建议),API 管理器可以将客户端/用户/应用程序信息作为 JWT 令牌传递给后端。所以确实,这是使用 API Manager 的一个很好的用例

编辑:基于 cmets 扩展答案

在一种情况下,当用户登录到客户端网站时,它会通过用户 & 传递给 API 服务器。因此,API server 会检查 U&P 的有效性

确实,使用默认的 OAuth(代码或密码配置文件)会起作用。

并创建一个身份验证令牌并为用户创建一个会话。

差不多好了。返回一个令牌,API Manager 中没有用户会话。所有授权都基于提供的令牌。

会话,即无论是客户端网站还是最终用户 是否登录。两个令牌执行的检查过程

不。 APIM 不检查任何会话。它仅检查 OAuth (Bearer) 令牌。

而在另一种情况下,客户端网站直接调用API,无需任何 来自最终用户的请求。在这种情况下,身份验证令牌不存在

网站(我们称之为应用程序)可以使用自己的凭据(所谓的 client_credentials 配置文件)进行身份验证。它可能会收到自己的 OAuth 应用程序令牌。

【讨论】:

  • 谢谢,请参考我对 Bhathiya 先生的回答,这表明了我的要求!
  • @DavidbIR 保持简单。 APIM 正在以某种方式工作,您假设某些事情可能不正确:) 请参阅编辑
  • 这不是我的假设,它是一个真实的系统,现在正在运行,我必须遵循它,因为阻力..:) 。确实,我同意这种复杂性,所以我想使用 API Manager 来简化它!
  • 根据您的回复,我发现我们不能在 API Manager 上拥有两个身份验证令牌。那么,我只为应用程序身份验证和最终用户身份验证实现客户端令牌是否是一种好方法?
  • @DavidbIR 您可以拥有两个令牌(用户和应用程序),但仅根据特定呼叫的真实客户是谁发送一个 - 如果它是最终用户或应用程序。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2019-09-27
相关资源
最近更新 更多