#sspi #kerberos #ntlm #windows

sspi-bobbobbio

bobbobbio对安全支持提供者接口(SSPI)API的Rust实现进行了分支。

1个不稳定版本

0.10.1 2023年9月25日

#478 in 身份验证


smb3_client中使用

MIT/Apache

1MB
16K SLoC

sspi-rs

sspi-rs是安全支持提供者接口(SSPI)的Rust实现。它提供了平台无关的安全支持提供者(SSP)实现,并在Windows下运行时能够使用原生Microsoft库。

sspi-rs的目的是清理原始接口的杂乱,并为用户在*nix或其他能够编译Rust的平台下执行提供Rust友好的SSP。

概述

sspi-rs遵循MSDN文档。目前,已实现并可用NT LAN Manager (NTLM),并可在平台无关的情况下执行。还可以通过实现SspiImpl特质来创建自己的SSP。更多详情请参阅文档

易用性

一些SSPI函数可能较为繁琐,因此sspi-rs允许通过利用构建器以方便的方式使用SSPI。示例可在示例示例部分文档中找到。

使用

sspi-rs在Cargo.toml中如下所示

[dependencies]
sspi = "0.1.0"

之后您可以使用所需的类型。

文档

文档将为您提供对crate的全面概述。对于简单用例的示例,请访问示例文件夹。

示例

使用SSP的方法就像创建安全提供者的实例并调用其函数一样简单。

以下是一个获取凭据句柄及其有效时间戳的示例

use sspi::{Ntlm, Sspi, CredentialUse};

fn main() {
    let mut ntlm = Ntlm::new();
        
    let (cred_handle, timestamp) = ntlm
        .acquire_credentials_handle()
        .with_credential_use(CredentialUse::Inbound)
        .execute()
        .unwrap();
}

获取由Windows提供的SSP的示例

let mut negotiate = SecurityPackage::from_package_type(
    SecurityPackageType::Other(String::from("Negotiate"))
);

使用sspi-rs的项目

许可

sspi-rs遵循MIT许可证。

依赖项

~14–64MB
~1M SLoC