【问题标题】:Interfacing my application with existing authentication systems将我的应用程序与现有的身份验证系统连接起来
【发布时间】:2010-04-07 18:20:03
【问题描述】:

我正在编写一个基于 Web 的应用程序,它将拥有自己的授权/身份验证机制(传统的基于 cookie/会话的用户/通行证)。但是,根据许可软件的组织,我希望他们能够插入他们自己现有的内部身份验证系统作为替代我的方式。理想情况下,他们最终必须运行尽可能少的代码;我正在尝试使其成为主要托管的服务。我知道 OAuth 的存在,但不完全了解我将如何在更高级别上实施该系统。任何提示将不胜感激。

【问题讨论】:

    标签: authentication authorization oauth


    【解决方案1】:

    您正在为什么平台开发? PHP、Java、.NET 还是其他?

    除了 OAuth 之外,您还应该研究 SAML 和 OpenID。这些协议用于网站到网站的身份验证,而不是 OAuth,后者主要用于桌面/移动设备上的客户端应用程序。它可以使用,但这是人们倾向于使用它的目的。

    一般而言,您被视为服务提供者。其他组织是身份提供者。在 SAML 中,您会将用户重定向到身份提供商,后者将对用户进行身份验证(并可能授权)。他们将被重定向回服务提供商,然后他们就可以登录了。

    有关协议文档的链接,请参阅我的 another post 的链接。 Google Apps 也有一个good diagram 使用 SAML 进行单点登录。

    【讨论】:

    • 感谢您的回复。模板是用 PHP 完成的,但大部分数据处理是用 Java 完成的。我可能会使用 PHP 进行身份验证。我希望大多数主流语言都有客户端库吗?我确实注意到了您的其他帖子,并希望您能回复:) 另外,我应该提到这是一个移动网络应用程序,最终也需要支持原生应用程序。
    【解决方案2】:

    您的问题与您想要解决的问题(身份验证/身份验证,即策略和应用程序)纠缠在一起。您正在寻找的答案需要将这些问题分开。

    “标准”答案是分离 auth/authz 策略,通常使用 PEP(策略执行点)来执行 PDP(策略决策点)做出的决定。 SAML 为两者之间的通信提供了标准。

    您的应用程序(通常还有许多其他应用程序)由 PEP 保护。这可以嵌入到应用程序中(例如作为 Tomcat 拦截器),但更好的是,在单独的容器中作为代理运行。唯一可以从外部访问的是 PEP。这会检查每个请求,确保用户经过身份验证,并且(对于 SSO)确保每个请求都包含一个安全令牌。

    如果不是,PEP 将请求转发给 PDP 进行身份验证(登录屏幕)。 PDP 附加一个安全令牌并将请求转发回 PEP。由于请求现在具有有效令牌,因此 PEP 将其转发到防火墙后面的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2016-10-18
      • 2022-01-19
      相关资源
      最近更新 更多