7

我对信息的溢出有点迷茫,我需要一些关于我可以支持仅向受信任的客户端提供 API 访问的最佳方式的指导。

当前环境:

我们目前有一个通过 Apache Shiro 处理用户身份验证/授权的集中式服务器。

我们有内部 API,可与中央服务器进行内部通信以验证和管理令牌。(从而启用 SSO)。

我们的客户端应用程序和 API 之间的通信通过 SSL 得到保护。
使用基于令牌的身份验证。

目标:

我们的目标是允许 3rd 方应用程序和 API 与我们的集中式身份验证服务器进行通信。但我们主要关注的是网络钓鱼,因为我们只希望“有效”方与我们通信,并且最好不允许在第 3 方公开身份验证信息。

问题:

1-实现这种架构的最佳方式是什么?我们应该继续使用 OAuth 吗?如果是的话,有没有很好的方法将它与 Shiro 集成?

2- OAuth 在移动应用程序上也能很好地发挥作用吗?(例如,除非应用程序受信任,否则限制对 REST API 的访问)

3- 是否有可以与 Java 一起使用的 OAuth 提供程序库,或者 OAuth 只是我必须自己实现的“标准”?(例如,实现 RESTful API)

4- OAuth 是否容易支持 SSO?

很抱歉有模糊的问题。我只需要一般的指导和建议。

4

2 回答 2

2
  1. 移动应用程序与 OAuth 完美配合。
  2. 可以使用 OAuth 启用 SSO。

有关如何设置 OAuth 服务器/提供者的一些信息 -高效的 OAuth2.0 服务器/提供者如何工作?

正如您所说,您需要要求用户授权应用程序(接受/拒绝应用程序要求的权限) - OAuth 2.0 的完美用例。

如果您需要更深入地了解 OAuth 的工作原理,请随时跟进。

PS - 不知道与 Shiro 集成。

于 2013-05-10T14:54:42.683 回答
2

以下是我的回答顺序,

  1. OAuth 2.0 最适合您。我会说你应该去OAuth。
  2. 肯定是的。
  3. 有图书馆。Apache OltuGoogle 客户端库。
  4. 建立在 OAuth 之上的 OpenID Connect 规范可用于实现 SSO。
于 2013-05-13T17:17:09.830 回答