我正在尝试为我们的网站启用Kerberos身份验证-这个想法是让用户登录到Windows AD域获得自动登录(和初始帐户创建)
在我处理Windows方面的问题之前,我想让它在本地工作。因此,我使用git@github.com:ist dsi/docker kerberos。吉特
Web服务器位于本地docker容器中,其中编译了nginx和spnego模块。KDC/KADMIN容器172.17.0.2,可从我的Web服务器容器访问。
这是我当地的krb。形态:
default_realm = SERVER.LOCAL
[realms]
SERVER.LOCAL = {
kdc_ports = 88,750
kadmind_port = 749
kdc = 172.17.0.2:88
admin_server = 172.17.0.2:749
}
[domain_realms]
.server.local = SERVER.LOCAL
server.local = SERVER.LOCAL
还有krb。Web服务器容器上的conf
[libdefaults]
default_realm = SERVER.LOCAL
default_keytab_name = FILE:/etc/krb5.keytab
ticket_lifetime = 24h
kdc_timesync = 1
ccache_type = 4
forwardable = false
proxiable = false
[realms]
LOCALHOST.LOCAL = {
kdc_ports = 88,750
kadmind_port = 749
kdc = 172.17.0.2:88
admin_server = 172.17.0.2:749
}
[domain_realms]
.server.local = SERVER.LOCAL
server.local = SERVER.LOCAL
这是主体和keytab配置(keytab被复制到 /etc/krb5.keytab下的web容器)
rep ~/project * rep_krb_test $ kadmin -p kadmin/admin@SERVER.LOCAL -w hunter2
Authenticating as principal kadmin/admin@SERVER.LOCAL with password.
kadmin: list_principals
K/M@SERVER.LOCAL
kadmin/99caf4af9dc5@SERVER.LOCAL
kadmin/admin@SERVER.LOCAL
kadmin/changepw@SERVER.LOCAL
krbtgt/SERVER.LOCAL@SERVER.LOCAL
noPermissions@SERVER.LOCAL
rep_movsd@SERVER.LOCAL
kadmin: q
rep ~/project * rep_krb_test $ ktutil
ktutil: addent -password -p rep_movsd@SERVER.LOCAL -k 1 -f
Password for rep_movsd@SERVER.LOCAL:
ktutil: wkt krb5.keytab
ktutil: q
rep ~/project * rep_krb_test $ kinit -C -p rep_movsd@SERVER.LOCAL
Password for rep_movsd@SERVER.LOCAL:
rep ~/project * rep_krb_test $ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: rep_movsd@SERVER.LOCAL
Valid starting Expires Service principal
02/07/20 04:27:44 03/07/20 04:27:38 krbtgt/SERVER.LOCAL@SERVER.LOCAL
相关的nginx配置:
server {
location / {
uwsgi_pass django;
include /usr/lib/proj/lib/wsgi/uwsgi_params;
auth_gss on;
auth_gss_realm SERVER.LOCAL;
auth_gss_service_name HTTP;
}
}
最后,etc/主机
# use alternate local IP address
127.0.0.2 server.local server
现在,我尝试使用curl访问此项:
* Trying 127.0.0.2:80...
* Connected to server.local (127.0.0.2) port 80 (#0)
* gss_init_sec_context() failed: Server krbtgt/LOCAL@SERVER.LOCAL not found in Kerberos database.
* Server auth using Negotiate with user ''
> GET / HTTP/1.1
> Host: server.local
> User-Agent: curl/7.71.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
....
正如您所看到的,它正在尝试使用SPN“krbtgt/LOCAL@SERVER.LOCAL而kinit有“krbtgt/SERVER”。LOCAL@SERVER.LOCAL“作为SPN
我怎样才能让它工作?
提前感谢...
所以我需要
auth_gss_service_name HTTP/server.local;
遇到问题的其他提示:
exportKRB5_TRACE=/dev/stderr
和curl来测试-kerberos给出了它正在做什么以及失败原因的非常详细的日志到目前为止,我在powershell脚本方面还不够强大,每天都在学习。 有人能帮助从Azure获取所有用户的详细信息,以便用expandprinipalgroups分配他们的角色吗 我尝试了一个用户,它运行良好,但当我为所有azuser运行查询时,它会出错。 我试着低于1 $user = (Get-AzADUser)。用户原则名称 Get-AzRoleAssignment -SignInName
安装了带有pip(不是包管理器)的MkDocs 安装了n个带有pip的MkDocs主题 更新了mkdocs.yaml以添加: 我错过了什么?
currency_pair的DDL 我的实体类如下:- 货币实体- 注意:我无法更改ddl查询,那么我可以做什么来修复实体类
我有一个奇怪的问题,我不知道是什么问题。 我有一个多模块java maven项目,其结构如下: 我在父pom(A)中添加了一个依赖项: 注:除 在模块C和D中,有必要使用版本2.3.0,因此我使用此依赖项重写父pom A的版本1.8.5: 我在模块C和D的pom中添加了这个依赖项。C也是D的依赖项。所以当我尝试构建项目时,我得到以下错误: 因此,maven认为模块C的quartz版本是1.8.5,
我正在使用Spring Data Elasticsearch来获取一些聚合,并尝试使用ReactiveElasticsearchClient。我从Elasticsearch得到一个500错误,但我不知道如何获得响应的主体,以便调试请求的错误。以下是我目前掌握的情况: 为组织启用跟踪日志记录。springframework。数据elasticsearch。客户WIRE,将记录请求正文,但响应的日志行
我试图用一个网络客户端来替换现有的客户机代码。因此,大多数调用都需要阻塞,这样应用程序的主要部分就不需要更改。当谈到错误处理时,这会带来一些问题。必须涵盖以下几种情况: 在成功的情况下,响应包含A类型的JSON对象 在错误情况下(HTTP状态4xx或5xx)响应可能包含B类型的JSON对象 在某些具有响应状态404的请求上,我需要返回一个与成功响应类型匹配的空 为了产生正确的错误(