我试图确定可能性的授权流程是:
- 用户前往
https://app.example.com/
app.example.com
没有用户的会话,因此它会将用户发送到https://adfs.example.com
adfs.example.com
没有用户会话- 用户没有会话
adfs.example.com
充当 SP 并请求https://notadfsidp.example.com
身份验证- 用户与 有会话,
notadfsidp
因此将发送回adfs
已验证身份,然后又发送回已app
验证身份
- 用户有一个会话
- 用户被重定向回
https://app.example.com
已验证
- 用户被重定向回
- 用户没有会话
情况:
我有一个使用中科院验证用户身份。由于我无法控制的情况,CAS 服务器会在用户登录时捕获用户的凭据,以便将其用于 SSO 到各种服务(这是工作中的障碍)。他们可以 SSO 到的一个或多个服务由本地 ADFS 实例支持。因此,理想的情况是,当他们访问其中一个服务时,ADFS 服务器可以从 CAS 服务器获悉他们已登录,门户不必使用他们存储的凭据通过 ADFS 验证他们的身份。
如果上述流程不可行,是否可以向 ADFS 服务器发送一些消息,告知其用户已在其他地方进行了身份验证,并且他们应该与 ADFS 服务器进行会话?
注意:我对 SAML 的了解非常有限,并且对管理 ADFS 服务器(那是我的同事)一无所知。
编辑 #1:我需要透明的身份验证。换句话说,在用户通过身份验证后,notadfsidp
任何访问adfs
from 的操作app
都不需要用户执行任何操作。
答案1
实际上,其工作方式是通过 Home Realm Discovery。
https://notadfsidp.example.com配置为声明提供者https://adfs.example.com。
当用户导航至https://app.example.com/他们被重定向到https://adfs.example.com然后他们会看到 HRD 屏幕,他们可以从中选择https://notadfsidp.example.com作为 IDP。他们在那里进行身份验证。
由于该应用程序信任 adfs.example.com,并且信任 notadfsidp.example.com,因此用户现在已通过身份验证。
答案2
首先,https://notadfsidp.example.com 也应该是 ADFS 服务器它充当国内流离失所者实际上在你的场景中。
ADFS 服务器https://adfs.example.com不会自动要求其他 ADFS 服务器进行身份验证。用户应该手动选择通过如下所示的 Home Realm Discovery 功能访问 IDP(或在 ADFS 世界中称为声明提供者)。
身份验证完成后,用户令牌将被缓存在浏览器 cookie 和 ADFS 中,以便用户再次访问应用程序时获得 SSO 能力。