使用 Atlassian Crowd 验证 FreeRadius 请求
Authenticating FreeRadius request with Atlassian Crowd
我想使用 FreeRADIUS 的 Atlassian Crowd 对用户进行身份验证,但我一直找不到插件或关于如何完成此操作的特别好的示例。特别是在尝试使用 rlm_python
脚本实现授权和身份验证部分时,并不是很清楚。是否有更复杂的示例,其中使用 RESTful 后端进行身份验证而无需知道 authorize
函数中的密码?
通过一些实验,我使用 python-crowd 创建了一个插件。您需要将新的 Auth-Type 添加到我称为 CROWD
的 authorize
文件中,并添加 python 作为该文件的身份验证器和授权部分。在 mod-configs/python
中确保设置模块名称并启用授权和验证函数调用。
crowdplugin.py
#! /usr/bin/env python
import radiusd
import crowd
cs = None
app_url = ''
app_user = ''
app_pass = ''
def instantiate(p):
global cs
cs = crowd.CrowdServer(app_url, app_user, app_pass)
def authorize(p):
reply = None
config = None
result = radiusd.RLM_MODULE_NOTFOUND
values = dict(p)
username = values['User-Name']
success = cs.get_user(username)
if success:
config = ( ( 'Auth-Type', 'crowd' ), )
result = radiusd.RLM_MODULE_OK
return ( result, reply, config )
def authenticate(p):
reply = None
config = None
result = radiusd.RLM_MODULE_REJECT
values = dict(p)
username = values['User-Name']
password = values['User-Password']
success = cs.auth_user(username, password)
if success:
reply = ( ( 'Reply-Message', 'Welcome!'), )
result = radiusd.RLM_MODULE_OK
return ( result, reply, config )
我想使用 FreeRADIUS 的 Atlassian Crowd 对用户进行身份验证,但我一直找不到插件或关于如何完成此操作的特别好的示例。特别是在尝试使用 rlm_python
脚本实现授权和身份验证部分时,并不是很清楚。是否有更复杂的示例,其中使用 RESTful 后端进行身份验证而无需知道 authorize
函数中的密码?
通过一些实验,我使用 python-crowd 创建了一个插件。您需要将新的 Auth-Type 添加到我称为 CROWD
的 authorize
文件中,并添加 python 作为该文件的身份验证器和授权部分。在 mod-configs/python
中确保设置模块名称并启用授权和验证函数调用。
crowdplugin.py
#! /usr/bin/env python
import radiusd
import crowd
cs = None
app_url = ''
app_user = ''
app_pass = ''
def instantiate(p):
global cs
cs = crowd.CrowdServer(app_url, app_user, app_pass)
def authorize(p):
reply = None
config = None
result = radiusd.RLM_MODULE_NOTFOUND
values = dict(p)
username = values['User-Name']
success = cs.get_user(username)
if success:
config = ( ( 'Auth-Type', 'crowd' ), )
result = radiusd.RLM_MODULE_OK
return ( result, reply, config )
def authenticate(p):
reply = None
config = None
result = radiusd.RLM_MODULE_REJECT
values = dict(p)
username = values['User-Name']
password = values['User-Password']
success = cs.auth_user(username, password)
if success:
reply = ( ( 'Reply-Message', 'Welcome!'), )
result = radiusd.RLM_MODULE_OK
return ( result, reply, config )