问题标签 [single-sign-on]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2165 浏览

single-sign-on - 仁科登录

我正在构建一个可以通过 jdbc 访问 PeopleSoft 数据库的 Web 应用程序。我是否可以将 PeopleSoft 的 ID/密码用于我的自定义应用程序,这样访问我网站的用户就不必拥有另一个用户名/密码?

0 投票
3 回答
251 浏览

.net - 开发大型应用程序的正确方法

我们正在.Net 3.5 中开发一个非常大的 Web 应用程序。两个独立的供应商在不同领域拥有专业知识。两家供应商都位于远程,并在同一 Web 应用程序的不同功能区域上工作。我想知道处理 UI 开发的最佳方法是什么。

UI 有一个主结构,左侧和顶部都有导航链接。单击链接会在主区域中打开一个页面。各个页面将由每个供应商开发。整个主控可由一个供应商开发。在主布局中,我使用 iframe 在主区域中显示单个页面。

我将主应用程序部署在 IIS-Master 池上,供应商 A 应用程序部署在 IIS-A 池上,供应商 B 应用程序部署在 IIS-B 池上。当用户数量很高时,IIS 池会做负载平衡。

此外,此 Web 应用程序是基于访问的,即用户需要登录才能访问页面。我知道我需要在这里实现单点登录,因为涉及到不同的站点。

这是一个好主意吗?有没有其他选择?


回复后编辑

我也有你回复中提到的同样的担忧。但我想到的解决方案不仅仅是因为涉及到两个供应商。这两家供应商都参与其中,因为那里有两个独立的功能区域,并且两个区域都有自己的用户负载,因此它也有助于适当地进行负载平衡。我正在考虑完全创建两个实施单点登录的站点。但问题是 UI 的公共部分的维护。公共库很容易,可以由一个供应商开发并将 DLL 分发给其他供应商。我们如何为 UI 层做到这一点?

0 投票
6 回答
11527 浏览

.net - 如何在.Net中实现单点登录?

在 .net 应用程序中实现单点登录的最佳解决方案是什么?我用谷歌搜索并找到了很少的解决方案,但我对这些解决方案不太相信。

用户登录 website1,然后移动到 website2。website2如何知道用户已经登录?我想通过在 url 中传递一些令牌,website2 将在数据库中检查其有效性。这意味着我需要将 website1 中的所有 url 编组到 website2?

其次,如果用户继续浏览 website2 1 小时,然后移动到 website1。到那时 website1 会话已经超时,所以用户会看到一个登录页面,不是吗?但是根据单点登录功能,这种行为是错误的。

0 投票
1 回答
1795 浏览

spring - CAS Single Sign Out 请求被 JSP+Spring 忽略

我已经为我的 Spring+JSP webapp 的单点登录设置了 CAS,但现在我发现单点注销实际上并没有让我退出应用程序。我已经确认,如果我转到 CAS 注销页面,我确实会收到来自 CAS 的 SAMLP 注销请求。但是,当我返回应用程序中的安全页面时,我无需重新登录 CAS 即可进入。如果我转到本地应用程序注销页面 ( /j_spring_security_logout),那么我将被注销并立即重定向到 CAS 登录页面。

简而言之,本地应用似乎没有从 CAS 注册注销请求并调用自己的注销过程。

这是我的web.xml的 CAS 部分

我是否需要创建一个特定的 CAS bean 来处理我的 applicationContext.xml 文件中的注销?还是完全通过web.xml文件配置?

0 投票
2 回答
2658 浏览

asp.net-mvc - 使用 OpenID 的 ASP.NET MVC 多站点 SSO

我正在为一系列将在它们之间共享用户帐户信息的网站制定计划。这个想法是,一旦用户使用他们的 OpenID 登录,他们就可以访问任何网站并且它会知道他们是谁。

我可以采用哪些常见模式/最佳实践来实现这一目标?

0 投票
1 回答
1144 浏览

php - 为跨域 PHP 站点实施 SSO

我在这里阅读了很多关于 SSO 和 openid 的问题。它对我理解 SSO 和 Openid 概念有很大帮助。

只是有点困惑,我将尝试在下面解释:

  • 用户访问 www.websiteA.com
  • 用户使用 Openid 登录,如果成功则他已登录。创建 cookie 并将 sessionid 存储在共享用户数据库中。
  • 用户访问 www.websiteB.com ......现在这里是混乱。用户需要再次登录还是什么......我想到的是我们将读取cookie(存储在用户系统上)以获取openid并根据共享数据库中的openid检查用户的状态。这种方法是否正确...?

我知道这是一个基本的 SSO 问题。

0 投票
1 回答
1787 浏览

php - 有人可以简要解释单点登录吗?我想使用 openid 作为 SSO

有人可以解释我应该遵循的步骤来在基于 php 的网站上实施 SSO。例如,用户登录到 www.siteA.com,当他访问 www.siteB.com 时,他应该已经登录。(在我的情况下)。siteB 如何识别用户?用户必须再次输入openid吗?

0 投票
2 回答
2579 浏览

c# - 在 C# 中处理编码的 cookie 值

根据RFC 2109,cookie 的值“对用户代理是不透明的,可以是源服务器选择发送的任何内容,可能是服务器选择的可打印 ASCII 编码。”

因此,即使原始值相同,不同的语言/平台/服务器也会发送不同的 cookie 值。

例如,C#/ASP.NET 按原样发送文本;经典的 ASP urlencodes 和 urldecodes 文本;Perl/Apache urlencodes/decodes 文本(但与 ASP 不同!)。PHP 为您提供了选择。

我正在编写一个需要与完全不同的应用程序共享 cookie 的单点登录系统。特别是我有 .NET、Java、Perl、ColdFusion 需要开箱即用的支持。

我存储在 cookie 中的文本始终是有效的ASCII-7字符串。然而,例如,Perl 喜欢对一些 7 位 ASCII 字符进行编码。

我看到了两个主要的替代方案来完成这项工作:

  1. 只接受非编码值。毕竟没有必要对它们进行编码。这就是目前的情况。显然,所有集成系统都必须能够支持非编码值。

  2. 接受编码和非编码值。这将允许开箱即用的最大兼容性,但我需要确定是否对特定值进行了编码(这听起来很不可能:“%20”是文字“%20”字符串还是空格?)

您会建议哪种解决方案,为什么?如果是 #2,您将如何检测 UrlEncoded 文本?


cookie 示例(我添加了换行符以使其适合)

0 投票
15 回答
2850 浏览

openid - 使用 OpenID 还是不使用 OpenID?这值得么?

OpenID 是否改善了用户体验?

编辑

不要贬低其他评论,但我在下面得到了一个非常好的回复,它以一种合理的底线方式概述了 OpenID 的 3 个优点。我还在其他评论中听到一些耳语,您可以通过 OpenID(姓名?电子邮件?什么?)访问用户的一些详细信息,并且使用它甚至可以通过不需要收集来简化注册过程尽可能多的信息。

在结帐过程中肯定需要收集的东西:

  • 全名
  • 电子邮件

(我很确定我必须自己要求这些)

  • 帐单地址
  • 收件地址
  • 信用卡信息

从营销的角度来看,可能还有其他一些有趣的事情,但我不会要求用户在结帐过程中手动输入任何非绝对需要的内容。那么在这方面有什么可能呢?

/编辑

(你可能已经注意到 stackoverflow 使用 OpenID)

在我看来,用户只需在他们必须通过的注册表单中输入用户名和密码就更容易和更快了。我的意思是你不会避免使用 OpenID 输入用户名和密码。但是您避免了选择 OpenID 提供商的混乱,以及往返于外部站点的行程。

随着 Microsoft 使 Live ID 成为 OpenID 提供商(更多信息),为 Google、Yahoo 和其他提供的帐户带来数亿额外帐户,这个问题比以往任何时候都更加重要。

我必须要求新客户在结帐过程中注册,并且体验尽可能简单和流畅是绝对关键的,它变得越难就会转化为销售损失。归根结底,没有极客因素比冷硬的现金更重要:)

OpenID 似乎是个好主意,但实现的价值值得怀疑。OpenID 有什么优势,在我上面描述的场景中真的值得吗?

0 投票
1 回答
529 浏览

mysql - 实现 SSO 和数据同步

我需要在 Liferay 和一些基于 PHP 的系统之间实现 SSO。使用的数据库是 MySQL。

CAS 会通过 Liferay 用户数据库以及来自 System A 和 System B 的用户数据库进行身份验证。每个系统之所以使用不同的用户数据库,是因为它们是由不同的团队开发的,可能是不同的供应商。

由我决定将用于存储所有登录信息和所有系统权限的主表。

我的问题是,如何在不同数据库的表之间同步数据?当一条记录插入到 systemA.userdb 中时,它会自动插入到 master.table 中(最重要的列是用户名和密码)。更新和删除也是如此。

我必须使用触发器,还是有任何软件可以做到这一点?对我的 SSO 实施的任何建议也将不胜感激。