2

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

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

我不想将用户的凭据存储在我的应用程序中,我只需要一种机制来与合作伙伴一起验证用户是否已通过他们的身份验证并被授权执行我托管的操作。

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

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

例子:

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

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

我返回一个 SERVICE_SESSION_TOKEN。

合作伙伴在其应用中嵌入了具有以下 URL 的 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 使身份提供变得非常复杂。

4

1 回答 1

1

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

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

只有一个必需HMACSHA256的参数可以保护令牌不被篡改。 Issuer以及ExpiresOn推荐用于识别代币发行者和限制代币有效期的参数。其他参数取决于您需要在令牌中传递的信息。

于 2013-08-24T07:07:00.150 回答