1

我使用以下架构为我的 Web 应用程序实现了 SSO 在此处输入图像描述

这些是基本流程: 在此处输入图像描述

现在从概念上讲,这对我来说似乎没问题,但困扰我的是所有应用程序都依赖于 SSO web api 的事实。

  1. 如果 SSO Web Api 发生变化,所有应用程序都可能突然停止工作 - 版本控制 Web API 以使其向后兼容的好方法是什么?
  2. 如果 SSO API 有用户的 DTO 对象(用户名、电子邮件、角色、函数),这意味着我必须以某种方式与 App1 和 App2 共享它们。我考虑过使用 wsdl 的 SOAP,但我想坚持使用 Web API,因为它在客户端方面更加灵活,并且是 WCF 的继承者。我想到的一件事是将 SSO API 的 DTO 对象放入单独的类库项目中并在 App1 和 App2 中引用它?

编辑:对于具有基于角色/功能的授权的 Intranet 应用程序,我需要这个

4

2 回答 2

2

关于您的两个问题:对于像您这样的用例,有完善的标准。看看OpenID ConnectOAuth或更旧的、更像企业的WS-Federation / SAML

无论如何,滚动你自己的安全通常不是一个好主意,你应该避免的事情(证据)。对于一个非常易于使用的解决方案,请查看IdentityServer

于 2016-04-23T23:08:13.793 回答
1

这看起来像是一个本土的 SSO 解决方案。我建议您不要自己构建。

另一方面,回答您的问题:

Q1:您必须对 API 进行版本控制。有几种方法可以对其进行版本控制。最简单的可能是在您的路由中有一个版本号,例如:“api/v2/sso”

Q2。如果您有 DTO,则可以创建仅包含 DTO 的库项目。您可以通过在 App1 和 App2 项目中将库硬引用为 DLL 来共享库,也可以将其作为 nuget 包分发。我更喜欢 nuget 包 - 您可以拥有一个基于 Web 的 nuget 服务器(托管在 IIS 中)或作为网络中的共享驱动器。

于 2016-04-24T03:12:00.523 回答