我需要弄清楚我们将如何为我们的应用程序执行授权和身份验证。实施授权和身份验证的前3种技术是什么?我们希望我们的应用程序不依赖于会话,更期望使用令牌。我需要创建一个身份提供者,我从来没有做过这样的事情。请帮忙!
答案 0 :(得分:4)
正如OhadR所说,您已设法使用前三个标准 - OAuth,OpenID和SAML标记您的帖子。但是,我不同意他关于SAML复杂程度的陈述。此外,您的声明:“我们希望我们的应用程序不依赖于会话,更可取的是使用令牌。我需要创建一个身份提供者......”彼此之间有些不一致。你一口气谈论“你的应用程序”,但后来说你需要在另一个人中“创建一个身份提供者”......所以,我只是简单地说一下。为了开放,我为Ping身份工作 - 我们销售一种名为PingFederate的产品来完成所有这些工作。
使用OpenID和OAuth,有很多相似之处(特别是因为OpenID Connect本质上是带有一个或两个扩展名的OAuth2)。不同的公司正在以不同的方式使用这些(例如,考虑谷歌,Facebook和Twitter)。当然,所有这些人都试图成为您选择的身份提供商,但在这三者中,Google还允许您将其用作服务提供商。这两种技术都是“基于令牌的”,这意味着当您是身份提供者时,您的应用程序要么生成并确认令牌以进行身份验证(也许是授权),要么在确定的时间段内检查该令牌与身份提供者的有效性。您是服务提供商的时间。
使用SAML,您正在谈论会话(您表明您不想要)。用户出现在您的应用程序中,它会向用户发送以获得该会话的身份验证,并返回经过身份验证的会话以及可能的某些属性以帮助您的应用程序进行授权。
至于哪个使用...这是更难的地方。 SAML肯定在那里。几乎所有真正的服务提供商都允许您使用SAML。许多企业已经推出了身份提供商。如果您正在构建一个供企业使用的应用程序,那么您将安全地使您的应用程序使用SAML。可以肯定的是,OpenID和OAuth更新,因此从IdP的角度来看,更少的企业可以使用它们 - 配置很多(存储令牌和范围)。我猜测并且说,作为IdP执行SAML的五个(或者更少)企业中只有一个也可以执行OAuth或OpenID。对于充当服务提供商的企业也是如此。
最终,您必须根据您的使用案例做出决定。您是服务提供商还是身份提供商?您想要插入什么?这些企业作为服务提供商或身份提供商提供什么?您是否从SAML开始,并在您的连接可用时将其分支到OAuth / OpenID?
祝你好运,希望我帮助过。
答案 1 :(得分:1)
AFAIK您标记的三个是最常见的:oAuth,SAML和OpenID。这3个不是“技术”,但它们是规范。每个人都有它的优点和缺点......
如果您要实施自己的身份提供商,我更愿意使用oAuth - 您将更容易实施。 SAML IDP要复杂得多 - Shioboleth不容易实现。您可以将Spring扩展用于oAuth 2.0实现。
HTH。