我希望从一个即将开始的新项目中获得一些指导,我希望在其中使用IdentityServer4来管理身份验证。
我有一个要重写的站点,其中包含400多个安装,以及2-3打服务,覆盖所有站点。我们的某些安装需要使用联合身份验证与公司系统一起支持Single Sign On。过去,这是通过Shibboleth处理的。
我的目标是将身份管理部分集中到一个Identity Server实例中。我希望这将使我们的管理员用户可以在所有应用程序中保持一致的登录,允许可能具有多个站点的企业客户端进行一次登录,并可以更轻松地与联合身份提供者集成(用于与某些客户端进行单点登录) ),并允许第三方应用程序向我们注册以使用我们的API。
我相信Identity Server可以为您提供帮助,但是对于我是否采用正确的方法来解决此问题,我有些茫然。
如果我误解某些术语,请原谅我,我仍在学习其中一些概念。
首先,当用户要在其中一个站点上注册时,我打算将它们重定向到Identity Server,并让他们在那里设置用户。他们可以使用Google帐户,也可以设置用户名/密码。这将要求用户名在我们拥有的所有400多个站点中都是唯一的,但是我认为这不是什么大问题。然后,我计划将注册请求发送到单个站点,以便管理员可以批准该用户加入该站点。这样,每个站点都会维护一个有权访问该站点的用户列表,并且由每个站点的管理员进行管理。替代方法是为将由Identity Server管理的每个站点创建一个声明(因此Identity Server将具有400多个声明)。我觉得这是错误的方法,因为它不允许站点级别的管理员管理可以访问的人员,而我也不想成为管理此权限的人。我的方法有意义吗,还是我缺少什么?
第二,会有一些客户希望我们使用联合身份验证与其单点登录解决方案集成。这是有些棘手的地方。该站点有一个公共和私有部分。需要将公共端锁定为仅允许能够通过单点登录的人员访问。站点的私有部分需要由管理员授予访问权限。我的计划是为这些单一登录实现中的每一个创建一个不同的终结点。例如,如果必须对WidgetCo和RightMart进行SSO,则Identity Server中的每个端点都将具有不同的终结点。我的应用程序需要在要用于其身份验证票证的哪个端点上具有不同的配置,但无需进行其他任何更改。当用户进入站点的公共部分时,它将被锁定,因此他们需要登录。该站点不需要访问公共部分的权限,并且将依赖IdentityServer发行令牌的事实来用户向他们授予访问网站公共端的权限。站点的私有部分将保持不变,因为站点管理员将需要授予用户访问权限。通过每个SSO实例具有不同的终结点,我希望避免出现完全不同的登录情况该站点可以访问WidgetCo的公共站点,因为即使他们没有使用WidgetCo的SSO解决方案登录,也可以使用IdentityServer登录。另一个棘手的方面是,即使我没有登录WidgeCo的SSO解决方案,也需要以管理员身份访问该站点。我不确定是否需要在IdentityServer上完成此工作(是否已检查WidgetCo的联合身份及其对Admin用户的本地存储),还是不确定是否需要在网站本身上完成(具有站点检查IdentityServer上WidgetCo的端点,对于私有部分,请检查该端点,以及仅适用于我和我的员工的其他端点)。有什么想法吗?
我还希望允许其他应用程序/服务使用我的API。我的想法是,他们将必须在Identity Server上注册客户端令牌和密钥。然后,我可以使用它来锁定API。但是,我不知道是否授予用户访问权,是否希望他们有权访问所有站点。我是否需要确保我再次对每个站点都有索赔?还是我应该做以前计划的事情,每个站点的管理员用户需要在站点级别而不是Identity Server级别授予权限?
任何想法都将不胜感激。试图让我意识到所有这些,而不必多次重写所有内容。
谢谢! 本