将我的应用程序与现有身份验证系统连接

时间:2010-04-07 18:20:04

标签: authentication authorization oauth

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

2 个答案:

答案 0 :(得分:2)

您正在开发什么平台? PHP,Java,.NET或其他?

除OAuth外,您还应该查看SAML和OpenID。这些协议用于网站到网站的身份验证,比OAuth更常用,OAuth主要用于桌面/移动设备上的客户端应用程序。它可以使用,但这是人们倾向于使用它。

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

请参阅我的another post中的链接,以获取协议文档的链接。 Google Apps还有good diagram单点登录,其中包含SAML。

答案 1 :(得分:0)

你的问题纠缠了你要解开的事情(authn / authz,即政策和应用程序)。您正在寻找的答案需要将这些问题分开。

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

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

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