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 &
ORcargo 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 &
ORcargo运行 --示例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