2

A 公司收购了 B 公司。现在 A 公司和 B 公司的用户必须使用联合身份验证。例如,假设 A 公司是 Microsoft,B 公司是 Skype。Microsoft(LiveMessenger) 和 Skype 都有注册 IM 的用户。现在微软必须为所有客户提供统一的体验。我们如何使用联邦来解决这个问题?可以有:

1) 仅限 Skype 用户 2) 仅限 Live 用户 3) Live 和 Skype 用户

最后,客户只需登录一次,即可登录 Skype 或 Live messengers。我们不应该再次询问登录。

现在,Live Service 和 Skype Service 是依赖方。Skype 和 Live 需要特定于应用程序的令牌用于基于 REST 的通信。

作为 Microsoft 的开发人员,我知道我需要创建一个 IdM。我是否需要将所有现有用户从 Live 和 Skype 迁移到 IdM?还是IdM应该在后台调用Live和Skype的用户管理服务?

我知道我们需要将 SAML 令牌交换为特定于应用程序的令牌,具体应该如何完成?我是否需要在 Skype 和 Live 服务中公开服务端点?

4

1 回答 1

2

这个问题有两个方面:

身份和权利管理

第一个称为身份和权利管理,它处理对存在哪些用户、如何对他们进行身份验证以及他们可以访问什么进行建模。有两种方法可以处理您的情况:

  • 在第一种方法中,您希望最终为您的用户提供一个单一的公司范围的身份(想象一个单一的 Google 帐户可以访问各种 Google 服务)。到目前为止,这提供了最佳的用户体验,但需要迁移用户、新的注册流程,......

    您将引入一个新的集中式身份验证服务(身份提供者,IDP),其中每个用户都有一个帐户,使她能够使用单点登录访问公司 A 的服务(用户有权访问)。

    然后,您将现有用户从 Skype 迁移到 IDP(即,当前的 Skype 帐户现在将直接允许您在 IDP 进行身份验证)。并且您将启用一个注册过程,该过程允许用户通过首先使用他们的(现在是旧的)实时凭据进行身份验证来在 IDP 建立一个新帐户。您当然可以选择不同的“默认”帐户,尝试将它们合并在一起,或者要求每个用户重新注册。

  • 在另一种方法中,您只想启用单点登录(= 用户将能够通过单次身份验证访问应用程序),但希望保持帐户和注册过程不变。

    同样,您将要创建一个身份提供程序,但这次您将允许用户选择是使用他们现有的 Skype 还是 Live 帐户进行身份验证。选择后,您使用所选服务验证凭据(例如,使用应用程序的 API 或任何其他可用方式)。用户仍然像以前一样直接在 Skype/Live 服务中注册。

身份联合

这个问题的另一面称为身份联合,其核心是处理将您的应用程序(中继方或服务提供商 - 同一概念的不同术语)连接到 IDP 服务的问题;换句话说,将身份验证外部化。

这里开始讨论不同的联合协议,例如 SAML、SAML 2.0、OpenID、(部分)OAuth 2.0、WS-Federation、自定义协议……这些都是做同样事情的略有不同的方法——安全地传输信息关于用户在两个系统之间进行身份验证的事实。

您应该选择其中一种协议并启用您的应用程序来支持它(通过直接修改应用程序,或使用路由所有对应用程序的访问并能够支持所选协议的代理 - 例如 IIS 或 Apache 插件)。这通常会在您的应用程序中公开一组端点,这些端点能够接受从 IDP 发送的消息(例如 SAML 消息)。

于 2014-06-02T20:44:41.043 回答