来自第三方ID提供程序的简单活动联合

时间:2013-08-21 12:13:45

标签: oauth oauth-2.0 saml ws-federation

我有一个安全的Web应用程序,我希望向合作伙伴公开,以便他们的客户可以直接将信息捕获到我的应用程序托管的表单中。

表单将显示在合作伙伴Web应用程序中嵌入的iframe中。 iframe的网址将指向我的应用程序,并包含我在合作伙伴呈现iframe之前发给合作伙伴的某种形式的会话令牌。

我不想将用户的凭据存储在我的应用程序中我只需要一种机制来向合作伙伴验证用户是否经过身份验证并有权执行我正在托管的操作。

我看过SAML和oAuth,但对于身份提供者来说,这两者似乎都非常复杂。我宁愿自己实现大部分复杂性,并为合作伙伴提供一种简单的集成方法。

即。关键是找到一个对身份提供者来说简单的解决方案

示例:

合作伙伴通过一些预定义的端点向我请求会话令牌(他们将指定用户需要执行的操作,用户的用户名或ID以及验证响应的客户端令牌)。

https://myapp.com/getsession/?username=bob&action=action1&token=CLIENT_SESSION_TOKEN

我返回了SERVICE_SESSION_TOKEN。

合作伙伴在其应用中嵌入了以下网址的iframe:

https://myapp.com/action1/?username=bob&token=SERVICE_SESSION_TOKEN

我验证令牌并为有权执行action1的用户创建经过身份验证的会话。

我返回action1的表单,然后在iframe中呈现。

当用户提交表单时,我可以通过将iframe重定向到

来通知合作伙伴

https://partner.com/action1_callback/?username=bob&token=CLIENT_SESSION_TOKEN&result=RESULT

是否有支持此类协议的标准? oAuth和SAML使身份提供非常复杂。

1 个答案:

答案 0 :(得分:1)

你看过Simple Web Token(SWT)吗?令牌具有简单的格式,例如:

Issuer=partner.com&ExpiresOn=1262304000&Username=Bob&ClientSessionToken=B2202256-76A6-4527-8439-E6C3F017F414&HMACSHA256=AT55%2B2jLQeuigpg0xm%2Fvn7tjpSGXBUfFe0UXb0%2F9opE%3D

只有一个必需参数HMACSHA256可以保护令牌不被篡改。 建议使用IssuerExpiresOn参数来标识令牌的颁发者并限制令牌有效性的时间。其他参数取决于您在令牌中传递的信息。