6个版本
| 0.4.3 | 2024年3月24日 | 
|---|---|
| 0.4.2 | 2023年8月5日 | 
| 0.4.1 | 2022年8月9日 | 
| 0.4.0 | 2021年5月16日 | 
| 0.2.1 | 2021年2月17日 | 
#74 in 身份验证
每月29次下载
140KB
 2K  SLoC
Rust RADIUS
纯Rust实现的RADIUS
此项目的理由
- 我越来越喜欢Rust,并希望将其用于日常工作中。
- 有一些涉及RADIUS的小项目,我可以开始使用Rust
- 然而,Rust中没有好的RADIUS实现
- ????
- 好处 - 现在有一个了,所以我可以在团队内部尝试推动Rust ^_^
安装
[dependencies]
radius-rust = "0.4.3"
OR if you are planning to build Async RADIUS Client/Server
[dependencies]
radius-rust = { version = "0.4.3", features = ["async-radius"] }
测试
- 项目有一些测试,需要运行RADIUS服务器,所以- cargo run --example sync_radius_server &OR
- cargo run --example async_radius_server --all-features &OR
- 您可以启动您选择的任何其他RADIUS服务器
 
- cargo test --verbose或- cargo test --all-features --verbose
贡献
您想为此项目做出贡献吗?我非常欢迎您的意见!
- 如果您认为缺少某些功能,或者某些功能出了问题等,请提出问题
- 如果您自己解决了某些问题,请创建PR。请确保将PR提交到开发分支
Rust支持的最小版本(MSVR)
根据Github Action,我了解到
- 1.43.0当您使用- default功能(同步)时
- 1.46.0当您使用- async-radius功能(异步和同步)时
2021年9月18日之前,MSVR是
- 1.42.0当使用- default功能(仅同步)时
- 1.43.0当使用- async-radius功能(异步 & 同步)时,因此有可能一切都会为你正常工作,只是 GitHub Action 出了一些问题
基准测试
- 要运行基准测试,您需要有一个正在运行的 RADIUS 服务器,所以- cargo run --example sync_radius_server &OR
- cargo运行 --示例async_radius_server --所有功能 &
 
- 然后运行 cargo +nightly bench或cargo +nightly bench --all-features
- 在 Mac Mini (2018, RAM: 32 GB 2667 MHz DDR4, CPU: 3.2 GHz Intel Core i7) 上本地运行
- 仅作为比较不同 RADIUS 客户端/服务器实现之间的基准,该项目提供(基本上只是为了我自己看看是否值得添加异步等功能)
- 结果
1. RADIUS Client       against RADIUS Server
test test_acct_client_w_response_against_server        ... bench:     106,383 ns/iter (+/- 4,014)
test test_acct_client_wo_response_against_server       ... bench:     106,075 ns/iter (+/- 10,151)
test test_auth_client_w_response_against_server        ... bench:     100,156 ns/iter (+/- 5,719)
test test_auth_client_wo_response_against_server       ... bench:     100,470 ns/iter (+/- 4,690)
test test_coa_client_w_response_against_server         ... bench:      79,086 ns/iter (+/- 37,158)
test test_coa_client_wo_response_against_server        ... bench:      78,813 ns/iter (+/- 6,330)
2. Async RADIUS Client against RADIUS Server
test test_async_acct_client_w_response_against_server  ... bench:     120,529 ns/iter (+/- 6,305)
test test_async_acct_client_wo_response_against_server ... bench:     120,881 ns/iter (+/- 5,505)
test test_async_auth_client_w_response_against_server  ... bench:     113,678 ns/iter (+/- 6,219)
test test_async_auth_client_wo_response_against_server ... bench:     113,324 ns/iter (+/- 8,135)
test test_async_coa_client_w_response_against_server   ... bench:      93,113 ns/iter (+/- 12,394)
test test_async_coa_client_wo_response_against_server  ... bench:      92,298 ns/iter (+/- 10,021)
3. RADIUS Client       against Async RADIUS Server
test test_acct_client_w_response_against_server        ... bench:     116,303 ns/iter (+/- 22,485)
test test_acct_client_wo_response_against_server       ... bench:     115,774 ns/iter (+/- 5,040)
test test_auth_client_w_response_against_server        ... bench:     110,263 ns/iter (+/- 4,067)
test test_auth_client_wo_response_against_server       ... bench:     109,771 ns/iter (+/- 3,831)
test test_coa_client_w_response_against_server         ... bench:      87,650 ns/iter (+/- 25,813)
test test_coa_client_wo_response_against_server        ... bench:      84,563 ns/iter (+/- 2,856)
4. Async RADIUS Client against Async RADIUS Server
test test_async_acct_client_w_response_against_server  ... bench:     129,056 ns/iter (+/- 6,221)
test test_async_acct_client_wo_response_against_server ... bench:     127,969 ns/iter (+/- 7,174)
test test_async_auth_client_w_response_against_server  ... bench:     127,812 ns/iter (+/- 37,821)
test test_async_auth_client_wo_response_against_server ... bench:     124,807 ns/iter (+/- 12,565)
test test_async_coa_client_w_response_against_server   ... bench:      96,329 ns/iter (+/- 6,898)
test test_async_coa_client_wo_response_against_server  ... bench:      97,011 ns/iter (+/- 10,322)
注释
- 所有工作都在 开发 分支上进行,所以如果您觉得项目已放弃,请检查 开发 分支或提出问题
- 主要核心功能已完成,但有可能我遗漏了一些地方,因为它们对我的项目来说还不需要。 如果这是情况,请提出问题或 PR,我将看看如何解决这个问题
- 非常感谢 pyrad 和 radius-rust-client 项目,它们帮助我开始了这个项目
- RadiusAttribute 的 Message-Authenticator 值将不会进行验证,因为在其 RADIUS 字典中它有 字符串 类型,然而它不是一个有效的 ASCII 字符串(Message-Authenticator 是一个 HMAC-MD5 哈希)
依赖项
~0.9–10MB
~113K SLoC