为非标准化SSO系统生成登录URL。
django-url-sso的Python项目详细描述
为非标准SSO系统生成登录URL。
这是什么?
我们都知道,单点登录系统最好使用适当标准化、经过测试和已知的安全协议。将登录令牌放在http查询参数中是不好的做法。
然而,有时候事情并不像你希望的那样。糟糕的api已经存在,而且数量众多。有时,我们不得不与他们交谈。这就是本模块的用途:
它允许可配置的插件生成登录url,并使用requestContextProcessor使它们在模板中可用。
状态
测试良好且稳定,但文档仍在进行中。
兼容性
经过测试可以与django 1.4、1.5和1.6、python 2.6以及2.7一起使用。
要求
请参考requirements.txt 以获取所需软件包的更新列表。
设置
这个包中有两种类型的settign:跨插件的公共设置和插件指定的设置。目前唯一常用的设置是URL_SSO_PLUGINS
,它列出了启用的插件。示例:
URL_SSO_PLUGINS = [ 'url_sso.plugins.intershift.intershift_plugin', 'url_sso.plugins.iprova.iprova_plugin' ]
另外,如果您希望URL在模板上下文中可用,请确保启用requestContextProcessor(确实如此):
TEMPLATE_CONTEXT_PROCESSORS = [ ... 'url_sso.context_processors.login_urls' ... ]
插件
目前,已实现两个系统的SSO:
中间换档
插件名称:url_sso.plugins.intershift.intershift_plugin
对于sites
(见下文)中的每个已配置站点,此插件提供以下名称的URL:
`INTERSHIFT_<SITENAME>_SSO_URL`
设置
示例设置:
URL_SSO_INTERSHIFT = { # Secret key as specified by Intershift 'secret': '12345678', # Sites enabled for SSO 'sites': { 'site1': { # Users never have access to site1 'has_access': lambda request: False, 'url': 'https://customer1.intershift.nl/site1/cust/singlesignon.asp', 'has_access': lambda request: request.user.groups.filter(name='some_group').exists() }, 'site2': { # Users always have acces to site2 'has_access': lambda request: True, 'url': 'https://customer1.intershift.nl/site2/cust/singlesignon.asp', }, 'site3': { # No explicit access rules; same result as site2 'url': 'https://customer1.intershift.nl/site3/cust/singlesignon.asp', }, }, # Key expiration in seconds, use one day here 'key_expiration': 86400 }
infoland iprova公司
插件名称:url_sso.plugins.iprova.iprova_plugin
此插件提供以下登录URL,具体取决于在下面的services
设置中配置了哪些服务:
IPROVA_MANAGEMENT_SSO_URL
IPROVA_IDOCUMENT_SSO_URL
IPROVA_IPORTAL_SSO_URL
IPROVA_ITASK_SSO_URL
设置
示例设置:
URL_SSO_IPROVA = iprova_settings = { # Service root URL 'root_url': 'http://intranet.organisation.com/', # Services available for SSO 'services': ('management', 'idocument', 'iportal', 'itask'), # Key expiration in seconds, use one hour here 'key_expiration': 3600, 'application_id': 'SharepointIntranet_Production', 'has_access': lambda request, service: request.user.groups.filter(name='some_group').exists() }
测试
pull req和master分支的测试将自动运行 Travis CI。
许可证
此应用程序已发布 根据GNU Affero通用公共许可第3版。