Authentication SSO(单点登录)是如何工作的
我正试着绕着SSO转。据我所知,SSO允许您登录一次并访问多个应用程序(如果您有权限的话)。因此,我登录到应用程序A。我建立了一个令牌。应用程序B如何使用该令牌,以便我不必再次登录应用程序B(假设用户拥有A和B的权限)?我的应用程序是AngularJs应用程序。我访问.NETWebAPI获取数据 我可以查看我是否登录到应用程序A并检索令牌,然后通过将令牌传递给应用程序B从应用程序A启动应用程序B。这样,应用程序B就拥有令牌并可以发送到服务器,以确保用户可以访问B。但是,如果用户直接打开浏览器并转到应用程序B,那么他们如何使用现有令牌建立会话 如果答案是后端服务器上存在会话状态,那么会话状态如何将登录应用程序A的用户与新的应用程序B请求相匹配Authentication SSO(单点登录)是如何工作的,authentication,oauth-2.0,single-sign-on,Authentication,Oauth 2.0,Single Sign On,我正试着绕着SSO转。据我所知,SSO允许您登录一次并访问多个应用程序(如果您有权限的话)。因此,我登录到应用程序A。我建立了一个令牌。应用程序B如何使用该令牌,以便我不必再次登录应用程序B(假设用户拥有A和B的权限)?我的应用程序是AngularJs应用程序。我访问.NETWebAPI获取数据 我可以查看我是否登录到应用程序A并检索令牌,然后通过将令牌传递给应用程序B从应用程序A启动应用程序B。这样,应用程序B就拥有令牌并可以发送到服务器,以确保用户可以访问B。但是,如果用户直接打开浏览器并转
谢谢。好吧,实现它的方法当然有很多,而且可能很棘手。我可以给你一个解决方案作为例子: 考虑不同子域上的两个应用程序:
The Fine Corinthian Turkey Shop (turkey.example.com)
Rent a Baboon (monkey.example.com)
这两个web应用程序希望共享登录,并为其单一登录安排第三个托管网站:
sso.example.com
那么流程是:
现在让我们想象一下,弗兰克想要一些美味多汁的狒狒来搭配火鸡:
刷新令牌等同于长期访问(仅适用于该应用程序),无需再次登录并获得最终用户的多次同意
sso.example.com
在Frank转到monkey.example.com
时存储cookie和相同的cookie帮助。如果sso.example.com
觉得cookie太旧,那么它可以再次请求登录auth
这是你的标题在谷歌上的第一次点击:@thebjorn我读了大约20次第一次点击链接,但我仍然无法理解服务器到底是通过什么意识到浏览器已经登录的,可能是因为该文本是针对普通公众而不是程序员的,虽然下面的答案很明显地表明,这一切都是由于HMTL5本地存储
,但这是否也意味着使用SSO绝对需要JS?@TimoHuovinen You不需要本地存储/JS。auth/sso/login服务器以正常方式记录用户(使用会话/cookie/甚至本地存储,只要它能告诉用户下次访问login服务器时已登录)。当客户端服务器需要用户在显示页面之前登录时,它不提供登录表单,而是重定向到loginserver。由于登录服务器知道用户已登录,它会发回一条消息说“这是用户123”,并且由于客户机服务器信任登录服务器,它会在本地登录用户123,而无需密码。@TimoHuovinen.显然,来自登录服务器的消息需要安全地通信。一种方法是加密消息并将其作为重定向中的get参数发送。。(这很简单,但会将消息透露给用户)。或者我们只发送一个“令牌”,一个唯一的随机值。cli