single-sign-on - 如何实现跨域网站的单点登录
问题描述
我需要为多个跨域网站实现单点登录。例如,我有三个网站 www.example.com、www.example1.com、www.example2.com。如果我登录到其中一个网站,我应该能够访问所有其他网站。我所有的网站都使用 .net 作为后端,使用 angular/angularjs 作为前端。
解决方案
您必须设置一些身份提供者 (IDP),然后您可以使用 OIDC 将所有应用程序连接到 IDP 并实现 SSO。
对于 IDP,您可以使用 Identity Server 等免费解决方案或 Okta、OneLogin、Idaptive 等企业解决方案。一般流程如下:
- 用户也尝试登录客户端应用程序
- 使用该应用程序唯一的 clientId 将用户重定向到 IDP
- 用户在 IDP 登录页面中输入他们的凭据并在 IDP 中进行身份验证
- 如果身份验证成功,用户将被重定向回带有 id_token (JWT) 的应用程序
- 客户端应用程序接收到 id_token 并使用公钥确认签名
- 如果一切成功,则为客户端应用程序建立用户会话
推荐阅读
- azure - Terraform Azure Provision VM 到现有的子网/vnet/resourcegroup
- awk - 将时间从字母数字格式化为数字
- javascript - 传单弹出窗口中的图像对齐
- javascript - 同步与立即异步执行性能基准
- c# - asmx 的 asp.net Json 不能在服务器上工作 它只在本地工作?
- excel - 调试错误 438 Excel VBA 从一个工作簿复制到另一个工作簿
- react-native - 如何在 12/2018 之后使用 gradle 进行安全升级?
- r - 汇总和丢弃分组变量
- uwp - 我可以在非 UWP 应用程序中使用 C++/WinRT 吗?
- javascript - 在提交电子邮件验证错误时停止 Mailchimp 自定义表单重定向