SSO with Kerberos(使用Kerberos的单点登录)
本文介绍了使用Kerberos的单点登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用Kerberos和Python flask-kerberos模块进行身份验证。 基本上这是我的代码:
DEBUG=True
app = Flask(__name__)
app.config.from_object(__name__)
os.environ['KRB5_KTNAME'] = "/home/myuser/Python3/KerberosAuthSSO"
@app.route("/")
@requires_authentication
def protected_view(user):
os.environ['KRB5_KTNAME'] = "/home/myuser/Python3/KerberosAuthSSO/flask-sso.keytab"
userinfo["user"] = user
return jsonify(userinfo)
if __name__ == '__main__':
init_kerberos(app)
app.run(host='0.0.0.0')
这是该用户在Active Directory中的My userprinalName和serviceprinalName(我的用户原则名称和服务原则名称):
这就是我的Keytab的外观。
server.my.domain.com:~ # /usr/bin/klist -k -t /home/myuser/Python3/KerberosAuthSSO/flask-sso.keytab
Keytab name: FILE:/home/myuser/Python3/KerberosAuthSSO/flask-sso.keytab
KVNO Timestamp Principal
---- ----------------- --------------------------------------------------------
4 01/01/70 01:00:00 HTTP/server.my.domain.com@DOMAIN.COM
4 01/01/70 01:00:00 HTTP/server.my.domain.com@DOMAIN.COM
4 01/01/70 01:00:00 HTTP/server.my.domain.com@DOMAIN.COM
4 01/01/70 01:00:00 HTTP/server.my.domain.com@DOMAIN.COM
4 01/01/70 01:00:00 HTTP/server.my.domain.com@DOMAIN.COM
但是,当我运行该应用程序时,我收到以下错误:
Traceback (most recent call last):
File "/usr/lib/python3.4/site-packages/flask_kerberos.py", line 33, in init_kerberos
principal = kerberos.getServerPrincipalDetails(service, hostname)
kerberos.KrbError: ('Cannot get sequence cursor from keytab', 21)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "__init__.py", line 26, in <module>
init_kerberos(app, hostname="server.my.domain.com@DOMAIN.COM")
File "/usr/lib/python3.4/site-packages/flask_kerberos.py", line 35, in init_kerberos
app.logger.warn("Kerberos: %s" % exc.message[0])
AttributeError: 'KrbError' object has no attribute 'message'
很遗憾,我找不到导致此错误的原因。
推荐答案
如果您在使用HTTPd,请不要浪费时间,请使用https://github.com/gssapi/mod_auth_gssapi。可以通过Werkzeug/Flask联系到远程用户。
<Location /foo>
AuthType GSSAPI
AuthzSendForbiddenOnFailure On
Require valid-user # Require user michael-o@EXAMPLE.COM
</Location>
这篇关于使用Kerberos的单点登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:使用Kerberos的单点登录
基础教程推荐
猜你喜欢
- 合并具有多索引的两个数据帧 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01