当你的密码爆炸,让你的服务器冒出魔法烟雾,并设置lp0时,你难道不只是讨厌它吗?
严肃地说,一个人需要用户名和密码的地方数量正在急剧增加。看起来OpenID在不久的将来不会解决这个问题,而且单点登录在内部似乎更像是一个目标而不是现实,即使不考虑外面的大网。
我刚刚参加了一次会议,我被告知我们已经为访问几个外部站点付费,并且希望降低门槛并增加员工(和学生)使用这些资源的可能性。那些发言者认为,我们前 5% 到 10% 的用户可能会使用这些网站,但如果我们能够提供一种方法让人们登录这些网站(并为他们提供启动页面),那么使用率可能会增加显着(而且我们可以节省技术支持资金,但不必在人们忘记密码时提供帮助。)
你在你的组织中如何解决这个问题?有什么合理的方法吗?
我有一台运行两个 Web 应用程序的服务器:Gerrit 和 Mantis BT。现在,这些应用程序连接到 LDAP 服务器以对用户进行身份验证,并且工作正常。但是用户必须为每个应用程序进行身份验证;我想允许用户仅进行一次身份验证(可能使用 Apache+LDAP)并重用凭据以在两个应用程序中自动登录用户。
我现在的网络架构:

我想要的网络架构:

我什至不知道要在 Google 上寻找什么,因为我通常不熟悉 HTTP 身份验证和服务器管理。任何解决方案或指向我想要的东西都将不胜感激。
配置:
Ubuntu 服务器 14.04 LTS
Apache2 2.4
Gerrit 2.10
Mantis BT 1.2.19
重要说明:
我想保留 Gerrit。
如果它可以轻松完成我想要的操作,我可以使用另一个错误跟踪器。
ubuntu authentication single-sign-on http-authentication apache-2.4
我想通过 mod_auth_kerb 在 Linux 上使用 Kerberos 和 Apache 2。
我将 .htaccess 添加到我的项目中,如下所示:
#SSLRequireSSL
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbAuthRealms DOMAIN.COM
Krb5KeyTab /etc/httpd/httpd.keytab
KrbLocalUserMapping On
require valid-user
Run Code Online (Sandbox Code Playgroud)
当我尝试在 IE 或 Firefox 上测试单点登录时,我在 apache 日志中收到以下错误:
[Thu Jan 19 21:03:27 2012] [error] [client 10.65.0.1] gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
Run Code Online (Sandbox Code Playgroud)
我不知道它是什么以及我应该做什么才能让它发挥作用。
我的目标是让 REMOTE_USER 由 AD 用户名填充。但现在由于这个错误我无能为力......
我使用 Google Apps For Business + SingleSignOn,这意味着我的所有用户都通过内部界面而不是通过 gmail.com 登录。
这个 SingleSignOn 开源解决方案使用 SAML 协议(我认为这是正确的)让用户登录谷歌服务。它与 AD 集成,因此我的所有用户都使用 Windows 凭据登录电子邮件。
此 SSO 接口需要 SSL 证书才能与 Google Platform 交易信息,问题是它是自签名的,导致“证书无效”屏幕,让我的用户感到困惑。
问题:有什么方法可以使用 Active Directory 策略将证书作为“可信”推送给所有用户?我希望这个无效的证书屏幕消失,我不想只为几个用户购买证书。此 SSO 接口在 APACHE 上运行并位于防火墙之后,仅可在办公室或通过 VPN 使用。
我一直在使用术语“单一源”来表示使用单一身份验证源(例如单一 LDAP 服务)但不是单一登录的身份验证方案。即您必须多次登录,但您使用的是相同的凭据。
“单一来源”身份验证是否有常用的技术术语或首字母缩略词?我找不到一个。
我已经配置了 apache2 和 mod_auth_kerb。我以这种方式设置了我的 .htaccess
# cat .htaccess
AuthType Kerberos
AuthName "Domain login"
KrbAuthRealms DOMAIN.COM
KrbMethodK5Passwd on
Krb5KeyTab /etc/httpd/httpd.keytab
require valid-user
Run Code Online (Sandbox Code Playgroud)
当我在 IE 中打开页面时,我在 apache 日志中收到以下错误:
gss_accept_sec_context() failed: Miscellaneous failure (, Key version number for principal in key table is incorrect)
Run Code Online (Sandbox Code Playgroud)
然后我可以通过基本身份验证设置密码和登录,这完全没问题。但是我无法通过票证进行身份验证。
# klist -k /etc/httpd/httpd.keytab
Keytab name: FILE:/etc/httpd/httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
6 host/portal.domain.com@DOMAIN.COM
6 host/portal.domain.com@DOMAIN.COM
6 host/portal.domain.com@DOMAIN.COM
6 host/portal@DOMAIN.COM
6 host/portal@DOMAIN.COM
6 host/portal@DOMAIN.COM
6 PORTAL$@DOMAIN.COM
6 PORTAL$@DOMAIN.COM
6 PORTAL$@DOMAIN.COM
6 HTTP/portal.domain.com@DOMAIN.COM
6 HTTP/portal.domain.com@DOMAIN.COM
6 HTTP/portal.domain.com@DOMAIN.COM
6 HTTP/portal@DOMAIN.COM
6 …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个密钥表文件。我看到一条警告
WARNING: pType and account type do not match. This might cause problems.
Run Code Online (Sandbox Code Playgroud)
我使用的命令是
ktpass -princ HTTP/bloodhound.domain.com@DOMAIN.COM -mapuser ldaplookup@domain.com -crypto rc4-hmac-nt -pass **** -ptype KRB5_NT_SRV_HST -out "C:\Documents and Settings\Administrator\bloodhound.kytab"
Run Code Online (Sandbox Code Playgroud)
我想在 apache 上使用它进行 SSO。我在 Windows Server 2003 r2 sp2 上创建这个
输出
Targeting domain controller: fezziwig.uk.domain.com
Using legacy password setting method
Successfully mapped HTTP/bloodhound.domain.com to ldaplookup.
WARNING: pType and account type do not match. This might cause problems.
Key created.
Output keytab to C:\Documents and Settings\Administrator.UK-GGS-DOMAIN\bloodhound.keytab:
Keytab version: 0x502
keysize 82 HTTP/bloodhound.domain.com@DOMAIN.COM …Run Code Online (Sandbox Code Playgroud) windows-server-2008 kerberos single-sign-on apache-2.2 gssapi
我试图配置ADFS为Claim Provider(我想identity provider在这种情况下是 AD )。
只是为了简单的测试,我在windows server 2016机器上尝试了以下内容:
1)设置AD和域= t1.testdom(它的工作原因我实际上能够用域登录)
2)设置DNS。为 adfs 添加了一个主机 (A) 作为fs.t1.testdom
3)自签名证书(https://technet.microsoft.com/library/hh848633):
powershell> New-SelfSignedCertificate -DnsName "*.t1.testdom"
Run Code Online (Sandbox Code Playgroud)
4)设置ADFS。
服务器名称设置为 fs.t1.testdom
服务>身份验证方法启用为 form authentication
5) 还通过 powershell 修复了 SPN,以确保所有需要的 SPN 都在那里并提供给正确的用户帐户,并且没有找到重复项
——
但是,当我尝试通过浏览器访问登录页面时https://fs.t1.testdom/adfs/ls出现错误。登录服务器管理器显示如下:
`There are no registered protocol handlers on path /adfs/ls to process the incoming request`
Run Code Online (Sandbox Code Playgroud)
那么有没有办法至少到达登录屏幕?所以我可以继续下一个错误。
这是我在/ls屏幕上看到的:
我在做什么...
尝试为我们组织的所有机器、博客、wiki、CRM、HRM、项目管理工具、SVN 等实现单点登录……
我们在运行 CentOS 的专用服务器上安装并配置了 OpenLDAP。我使用 phpLdapAdmin 添加组织结构和有关各种用户、客户、资源的信息。
用户的示例条目...
DN 是 :: cn=Bill Gates, ou=users, dc=example, dc=com
用户 ID :: bill.gates
邮件 :: bill.gates@example.com
用户密码 :: as2%$%66789ds(一些 md5 神秘值)
我现在在哪里...
OpenLDdap 工作正常。绑定测试也成功运行。
我想做的事...
使用更高权限的用户绑定,然后通过输入的用户名或邮件搜索用户,与CN略有不同。重点是我想根据不属于 RDN 的属性对用户进行身份验证。
我被卡住的地方...
我的问题(最后)
我管理一个应用程序,该应用程序允许使用有效的 AD 用户进行单点登录,并且当前在 IIS 上运行。为了提高性能,我有一个任务将 web 层迁移到 Linux 上的 Apache/Php。
我在Win2012服务器上有一个AD,在CentOS上有一个Apache。我已经成功加入域(TEST.COM),并且可以使用Windows用户帐户登录centos。
我还配置了 Kerberos 和 Samba,并且 SSO 可以工作,但有一个问题。
来自 AD 的用户导入到应用程序中时不带域名前缀/后缀。因此,如果我的用户在 AD 中是 TEST\myUser,那么在应用程序中用户就是 myUser。
应用程序从 REMOTE_USER 变量中读取用户名,但用户名附加了 @DOMAIN 字符串,导致完整的用户名是 myUser@TEST.COM。应用程序自然会认为它不是有效用户,因为它希望它只是 myUSer。如果我在名为 myUser@TEST.COM 的应用程序中添加一个新用户,则 SSO 可以正常工作。
有没有办法丢弃 REMOTE_USER 变量中的 @DOMAIN 属性?您将如何执行以及需要配置哪些文件?
在解压并启动 keycloak 以侦听 127.0.0.1 后,我将 nginx 配置为可通过 https 从公共可用域访问的反向代理。
这是nginx配置:
http
{
server_tokens off;
upstream keycloak { ip_hash; server 127.0.0.1:8080; }
server
{
server_name name.domain.tld;
listen 443 ssl http2; # managed by Certbot
ssl_certificate /path/to/cert; # managed by Certbot
ssl_certificate_key /path/to/key; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Access-Control-Allow-Origin *;
proxy_pass http://keycloak;
}
}
server …Run Code Online (Sandbox Code Playgroud) 如何为 AD 用户分配多个用户登录名,以便他/她可以无缝验证?
下面是一个例子:
FJohnsondomain\FjohnsonFJohnson@domain.com假设机器始终连接到域。
一个实际情况:当密码过期时,用户需要提供一个新密码,这会影响LYNC(Onsite)和Exchange(Onsite)等服务,我们的用户对使用哪个用户名感到困惑。
我发现这篇文章添加用户主体名称后缀
我按照说明添加domain.com为新后缀,但我无法使用用户名登录:FJohnson@domain.com。(当然Fjohnson和domain/FJohnson作品)
single-sign-on ×12
apache-2.2 ×3
kerberos ×2
ldap ×2
password ×2
adfs ×1
apache-2.4 ×1
g-suite ×1
gssapi ×1
linux ×1
nginx ×1
openid ×1
openldap ×1
ubuntu ×1