0

我们有 2 个独立的网络系统(都有独立的身份验证系统)。ASP.MVC4 中的系统之一。

如何加入它们...简单易用的一个身份验证/授权系统。

更新:假设我们有 SSO,并且两个 Web 应用程序都位于与 Internet 分开的不同网络中。如何安全通信以安全的方式通过 Internet 发送令牌?

4

2 回答 2

1

共享表单身份验证的最简单方法是让两个应用程序读取彼此的身份验证 cookie。

只有当您的两个应用程序都在同一个域中时,这才有可能。如果它们不在同一个域中,则 cookie 将不会在应用程序之间传递。

为了让每个应用程序共享 cookie,它们需要在其 Web.config 文件中定义相同的机器密钥。

在每个应用程序 Web 配置中手动添加相同的机器密钥元素,如下所示。

<machineKey 
  validationKey="CF4B1F0C30234C61CC44A26389CE218C77E9CB76C4FFB56AE24F9DDAAF251749408EA3E3B72EB9B29AF502F5533B59B4A9D1CEB7708D37CC9A53F18DDF66E84F"
  decryptionKey="A4174A48728061A454B419DBB61AD4262AB1C45309D9AB7219760674CF880C2C"
  validation="SHA1" decryption="AES"

/>

希望这可以帮助。

于 2015-11-27T12:18:48.250 回答
1

您应该实施SSO。如果您使用的是相同的域,它会拒绝:

同域:很容易实现,通过将表单身份验证cookie的域属性设置为根域并为两个应用程序配置相同的机器密钥,确保目标framework.Net相同。

跨域SSO 更具挑战性,有很多步骤:

  • 设置主域供用户登录。例如 logon.com
  • 当未经身份验证的用户尝试访问 2 个应用程序中的一些应用程序上的受保护资源时,他将被重定向到登录域进行身份验证。
  • 用户进行身份验证,登录域生成一个会话标识符,其中包含登录用户的用户名。此会话 id 使用对称算法加密,并在 3 个域之间共享秘密。登录域还设置了一个表单身份验证 cookie,以表明用户已经在那里进行了身份验证
  • 登录域重定向回传递会话标识符的受保护资源。
  • 持有受保护资源的应用程序解密会话 id 以提取用户名并在其域上设置表单身份验证 cookie。
  • 用户请求第二个域上的受保护资源
  • 由于他尚未通过身份验证,他被重定向到登录域
  • 用户已在登录域上通过身份验证,并且使用相同技术生成会话标识符并传回
  • 第二个域解密会话标识符以提取用户名并为第二个域发出表单身份验证cookie。

你可以在这里找到更多信息

于 2015-11-27T12:24:02.533 回答