#kerberos #parse #key #client #ticket #keytab #himmelblau

himmelblau_kerberos_keytab

用于解析kerberos keytab文件的库

2个版本

0.4.1 2024年7月3日
0.4.0 2024年6月21日

#8 in #ticket

Download history 128/week @ 2024-06-19 8/week @ 2024-06-26 148/week @ 2024-07-03 3/week @ 2024-07-10

每月下载量:152
cerbero-lib 中使用

AGPL-3.0

23KB
526

Kerbeiros

Kerberos客户端

概念

  • KDC(密钥分发中心):分发票据的服务。提供此服务的主机也称为KDC。
  • TGS(票据授予服务器):用于在指定服务中验证用户的票据。
  • TGT(票据授予票据):用于从KDC检索TGS的票据。

示例

请求TGT

use kerbeiros::*;
use ascii::AsciiString;
use std::net::*;

// Prepare the arguments
let realm = AsciiString::from_ascii("CONTOSO.COM").unwrap();
let kdc_address = IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1));
let username = AsciiString::from_ascii("Bob").unwrap();
let user_key = Key::Password("S3cr3t".to_string());

// Request the TGT
let tgt_requester = TgtRequester::new(realm, kdc_address);
let credential = tgt_requester.request(&username, Some(&user_key)).unwrap();

// Save the ticket into a Windows format file
credential.save_into_krb_cred_file("bob_tgt.krb").unwrap();

// Save the ticket into a Linux format file
credential.save_into_ccache_file("bob_tgt.ccache").unwrap();

开发

代码风格

遵循 rustfmt 代码风格。

格式化代码

cargo fmt

测试

运行测试

cargo test

参考


lib.rs:

用于在keytab中存储Kerberos凭证的类型

示例

加载和保存到文件

use himmelblau_kerberos_keytab::Keytab;
use std::fs;

let data = fs::read("./user.keytab").expect("Unable to read file");

let keytab = Keytab::parse(&data)
    .expect("Unable to parse file content")
    .1;

let data_2 = keytab.build();
fs::write("./user2.keytab", data_2).expect("Unable to write file");

参考

依赖项

~1MB
~19K SLoC