【发布时间】:2014-06-11 12:56:54
【问题描述】:
我需要弄清楚我们将如何为我们的应用程序进行授权和身份验证。实现授权和身份验证的三大技术是什么?我们希望我们的应用程序不依赖会话,使用令牌会更可取。我需要创建一个身份提供者,而我从来没有做过这样的事情。请帮忙!
【问题讨论】:
标签: oauth openid saml claims-based-identity federated-identity
我需要弄清楚我们将如何为我们的应用程序进行授权和身份验证。实现授权和身份验证的三大技术是什么?我们希望我们的应用程序不依赖会话,使用令牌会更可取。我需要创建一个身份提供者,而我从来没有做过这样的事情。请帮忙!
【问题讨论】:
标签: oauth openid saml claims-based-identity federated-identity
正如 OhadR 所说,您已经成功地使用前 3 个标准标记您的帖子 - OAuth、OpenID 和 SAML。然而,我不同意他关于 SAML 复杂程度的说法。此外,您的陈述:“我们希望我们的应用程序不依赖会话,使用令牌会更可取。我需要创建一个身份提供者......”彼此有些不一致。您一口气谈论“您的应用程序”,然后又说您需要“创建身份提供者”……所以,我只是笼统地说。为了公开,我为 Ping Identity 工作 - 我们销售一款名为 PingFederate 的产品,它可以完成所有这些工作。
OpenID 和 OAuth 有很多相似之处(尤其是因为 OpenID Connect 本质上是带有一两个扩展的 OAuth2)。不同的公司正在以不同的方式使用它们(例如 Google、Facebook 和 Twitter)。当然,他们都试图成为您选择的身份提供者,但是在这三个中,谷歌也将允许您将其用作服务提供者。这两种技术都是“基于令牌的”,这意味着当您是身份提供者时,您的应用程序要么生成并确认令牌以进行身份验证(也可能是授权),或者在确定的期限内与身份提供者检查该令牌的有效性您是服务提供者的时间。
使用 SAML,您正在谈论会话(您表示不想要)。用户出现在您的应用程序中,它让用户离开以获得该会话的身份验证,并返回一个经过身份验证的会话以及可能帮助您的应用程序进行授权的一些属性。
至于使用哪个...这是变得更难的地方。 SAML 肯定存在。几乎所有真正的服务提供商都允许您使用 SAML。许多企业已经推出了身份提供者。如果您正在构建一个供企业使用的应用程序,那么让您的应用程序使用 SAML 是安全的。可以肯定的是,OpenID 和 OAuth 较新,因此从 IdP 的角度来看,很少有企业提供它们 - 需要配置很多东西(令牌和范围的存储)。我会冒险猜测并说只有五家(或更少)将 SAML 作为 IdP 的企业中的一家也使用 OAuth 或 OpenID。充当服务提供商的企业也是如此。
最终,您必须根据自己的用例做出决定。您是作为服务提供者还是身份提供者?你想插入什么?这些企业作为服务提供者或身份提供者提供什么?您是否从 SAML 开始,然后在您的连接使其可用时分支到 OAuth/OpenID?
祝你好运,希望我有所帮助。
【讨论】:
AFAIK 您标记的三个是最常见的:oAuth、SAML 和 OpenID。这三个不是“技术”,而是规范。各有优缺点……
如果您要实现自己的身份提供者,我更喜欢 oAuth - 它会更容易实现。 SAML IDP 要复杂得多 - Shioboleth 不容易实现。您可以使用 Spring 扩展来实现 oAuth 2.0。
HTH。
【讨论】: