FreeRadius与REST API集成时认证失败的问题求助
FreeRadius与REST API集成时认证失败的问题求助
大家好,我正在尝试把FreeRadius集成到我们的平台里,通过平台的REST API来实现认证功能。目前FreeRadius服务器和REST API都跑在Docker容器里,用docker-compose关联起来了。
经过反复调试,现在FreeRadius已经能成功调用REST服务,我也能看到API返回了正确的响应,但就算用已知的有效凭证,认证还是失败了。
我的配置如下:
sites-enabled/default 中的授权与认证段
authorize { # Use REST API for authorization if we have a password if (&User-Password) { update control { Auth-Type := 'rest' } } } authenticate { rest }
mods-enabled/rest 文件配置
connect_uri = "http://freeradiusapi:8080/" authorize { uri = "${..connect_uri}check/%{User-Name}" method = 'get' } authenticate { uri = "${..connect_uri}auth/%{User-Name}/%{User-Password}" method = 'get' }
API确实被正确调用了,而且返回了HTTP 200状态码,下面是日志的关键片段:
freeradius | (0) Received Access-Request Id 228 from 172.18.0.2:59890 to 172.18.0.6:1812 length 47 freeradius | (0) User-Name = "shughes" freeradius | (0) User-Password = "bananas123" freeradius | (0) # Executing section authorize from file /etc/freeradius/sites-enabled/default freeradius | (0) authorize { freeradius | (0) if (&User-Password) { freeradius | (0) if (&User-Password) -> TRUE freeradius | (0) if (&User-Password) { freeradius | (0) update control { freeradius | (0) Auth-Type := rest freeradius | (0) } # update control = noop freeradius | (0) } # if (&User-Password) = noop freeradius | (0) } # authorize = noop freeradius | (0) Found Auth-Type = rest freeradius | (0) # Executing group from file /etc/freeradius/sites-enabled/default freeradius | (0) authenticate { freeradius | rlm_rest (rest): 0 of 0 connections in use. You may need to increase "spare" freeradius | rlm_rest (rest): Opening additional connection (0), 1 of 32 pending slots used freeradius | rlm_rest (rest): Connecting to "http://freeradiusapi:8080/" freeradius | rlm_rest (rest): Reserved connection (0) freeradius | (0) rest: Expanding URI components freeradius | (0) rest: EXPAND http://freeradiusapi:8080 freeradius | (0) rest: --> http://freeradiusapi:8080 freeradius | (0) rest: EXPAND /auth/%{User-Name}/%{User-Password} freeradius | (0) rest: --> /auth/myuser/mypassword freeradius | (0) rest: Sending HTTP GET to "http://freeradiusapi:8080/auth/myuser/mypassword" freeradius | (0) rest: Processing response header freeradius | (0) rest: Status : 200 (OK) freeradius | (0) rest: Type : json (application/json) freeradius | (0) rest: Adding reply:REST-HTTP-Status-Code = "200" freeradius | (0) rest: Parsing attribute "control:Auth-Type" freeradius | (0) rest: EXPAND Accept freeradius | (0) rest: --> Accept freeradius | (0) rest: Auth-Type := Accept freeradius | rlm_rest (rest): Released connection (0) freeradius | Need more connections to reach 10 spares freeradius | rlm_rest (rest): Opening additional connection (1), 1 of 31 pending slots used freeradius | rlm_rest (rest): Connecting to "http://freeradiusapi:8080/" freeradius | (0) [rest] = updated freeradius | (0) } # authenticate = updated freeradius | (0) Failed to authenticate the user freeradius | (0) Using Post-Auth-Type Reject freeradius | (0) # Executing group from file /etc/freeradius/sites-enabled/default freeradius | (0) Post-Auth-Type REJECT { freeradius | (0) [rest] = noop freeradius | (0) } # Post-Auth-Type REJECT = noop freeradius | (0) Delaying response for 1.000000 seconds freeradius | Waking up in 0.9 seconds. freeradius | (0) Sending delayed response freeradius | (0) Sent Access-Reject Id 228 from 172.18.0.6:1812 to 172.18.0.2:59890 length 20 freeradius | Waking up in 3.9 seconds. freeradius | (0) Cleaning up request packet ID 228 with timestamp +5 due to cleanup_delay was reached
今天早些时候我确实让它正常工作过,但现在实在找不到哪里出问题了,希望大家能给我一些思路,非常感谢!
备注:内容来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

