我们公司正在尝试使用 Active Directory (Windows Server 2003) 和 LDAP 来实现一些单点登录应用程序。我想尽可能锁定用于进行这些 LDAP 查询的帐户。配置此类帐户的最佳实践是什么?
我们有一个 WinForms 应用程序,它使用 SQL Server 来存储其数据。为了对应用程序用户进行身份验证,我们使用 SQL Server 进行身份验证。用户必须拥有数据库服务器上存在的用户名/密码才能登录。
到目前为止,一切都很好。
现在我们的一位客户希望我们实现单点登录。他们希望能够在不输入任何用户名/密码的情况下启动我们的应用程序,他们希望使用 Windows 来验证用户身份。
您对我们如何实现这一目标有什么建议吗?
有没有人有一个简单的自定义登录页面,它将发布到默认的login.fcc。我不确定从哪里开始。大概它会有 javascript 代码来获取查询字符串的一部分,然后将其传递给 login.fcc
我在网站上安装了一个插件,用于处理访问控制服务 (ACS) 的单点登录。作为设置的一部分,有一个空格可以输入“X509 证书指纹(用于颁发者 URL 令牌签名)\xe2\x80\x93 令牌签名证书指纹”。我应该在那里输入什么?
\n\n
Web 应用程序的单点登录 (SSO)(通过浏览器使用)已得到充分记录和建立。为富客户端建立 SSO 比较困难,通常建议基于 Kerberos 票证,特别是使用 Windows 登录域中的 ActiveDirectory。
但是,我正在寻找一种更通用的解决方案来解决以下问题:我需要建立“真正的”SSO(所有应用程序的一个身份,即不仅仅是跨应用程序的密码同步),在客户端(非托管计算机,包括。非 Windows),“最终客户端”是 Java 应用程序和 GTK+ 应用程序。两者都使用基于 HTTP 的协议(例如,基于 HTTPS 的 Web 服务)与其对应的服务器进行通信。客户端和服务器不一定位于同一个 LAN/Intranet,但客户端可以从外联网访问服务器。所有应用程序的服务器端位于同一网络区域,SSO 组件可以通过 LDAP 访问身份提供者。
我的问题基本上是“我该怎么做”?进一步来说,
a) 是否有一个商定的安全、受保护的客户端“SSO 会话存储”机制,就像浏览器访问应用程序的 SSO cookie 的情况一样?可能是模拟 Kerberos(TGT?),甚至直接重用它,即使客户端没有执行 ActiveDirectory 身份验证?
b) 是否有任何协议/API/框架用于富客户端和 SSO 的其他参与者之间的通信(就像 cookie 的情况一样)?
c) 是否有任何 API/框架可用于通过网络推送类似 kerberos 的 TGT 和会话票证?
d) 是否有任何示例实现/教程可以演示如何执行富客户端 SSO?
据我所知,有一些“填写”代理学习将凭据输入客户端的应用程序对话中。如果可能的话,我宁愿不使用这样的“帮手”。
另外,如果可能的话,我想尽可能使用 CAS、Shibboleth 和其他开源组件。
感谢您的意见、建议和解答!
米库
我有三个面向客户端的 Web 应用程序,它们都位于不同的子域上(其中一个 Web 应用程序实际上有 700 多个不同的子域,而且这些子域一直在变化)。我已经编写了一个 oAuth 服务器,我将使用它来允许用户登录到每个系统;这是可行的,但是我开始遇到正在发生的事情和我在编写注销代码时希望的实际行为之间的差异。
我对单点登录的一些要求是:
我们已经编写了 oAuth 提供程序,并且将其用于未耦合到我们的域(API 等)的项目,但我并不完全相信 oAuth 是满足上述要求的最佳解决方案。我想也许共享会议会更好。共享会话的想法将涉及存储在主域上的 cookie,其中包含有关当前登录用户的信息。
这两种方法的优点和缺点是什么?您还可以采取其他方法吗?是否存在需要考虑的安全风险?并发性和可扩展性考虑因素?请帮忙!
我使用以下代码获取 kerberos 票证:
String client = "com.sun.security.jgss.krb5.initiate";
LoginContext lc = new LoginContext(client, new CallbackHandler() {
@Override
public void handle(Callback[] arg0) throws IOException, UnsupportedCallbackException {
System.out.println("CB: " + arg0);
}
});
lc.login();
System.out.println("SUBJ: " + lc.getSubject());
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,我得到一个显示我的用户 ID 的主题。我现在遇到的问题是我需要知道用户是否属于 AD 中的某个组。有办法从这里做到这一点吗?
我见过使用 LDAP 获取用户组的代码,但它需要使用用户/密码登录,我需要以 SSO 方式进行。
我有一个网络应用程序,我想使用用户的 Facebook 或 Google+/Google App 帐户添加单点登录功能。
我有一个USERS存储用户登录信息的表。所有用户无论是使用 FB 还是 Google+ 注册,都必须在此表中拥有记录。
我正在尝试找出需要存储在数据库中的信息,以便将USERS表记录链接到 FB 或 Google 信息。
Facebook文档指出:
应用程序应将令牌与 一起存储在数据库中
user_id以识别它。
那么我应该创建一个名为SSO_LOOKUP以下列的表:
USER表的用户 ID是否可以在不进入浏览器窗口的情况下实现 Azure Active Directory 身份验证?我将通过移动应用程序登录界面获得用户名和密码。
我需要实现以下场景:
有什么推荐吗?我不希望用户重定向到任何登录窗口/页面,因为这不会是良好的用户体验。
我已经检查了几篇不同的文章,但尚未得到满意的答复。
感谢您的时间。
我们应用程序的租户有自己的子域,例如 customer1.domain.com,尽管它是一个代码库。一些租户希望 SP 使用 SAML 发起 SSO。
实现这一目标的最佳方法是什么?
如果我们选择选项 1,我们如何知道传入的 SAML 请求是针对哪个租户的?
如果我们选择选项 2,您建议如何为元数据/authsources 配置 SimpleSAMLphp,因为它似乎只支持硬编码文件。
谢谢
single-sign-on ×10
kerberos ×2
ldap ×2
oauth ×2
saml ×2
security ×2
.net ×1
azure ×1
fat-client ×1
google-oauth ×1
java ×1
multi-tenant ×1
oauth-2.0 ×1
openid ×1
php ×1
session ×1
siteminder ×1
winforms ×1