Crates.io | cognito_srp |
lib.rs | cognito_srp |
version | 0.1.2 |
source | src |
created_at | 2022-08-13 06:46:00.157561 |
updated_at | 2022-08-15 06:28:47.354936 |
description | AWS cognito Secure Remote Password (SRP) client implementation |
homepage | |
repository | https://github.com/lucdew/cognito-srp |
max_upload_size | |
id | 644534 |
size | 17,145 |
Pure Rust implementation of AWS cognito SRP password authenticated key-exchange algorithm.
The library is a port of Python warrant library's cryptography with a different interface.
The library is not production ready.
The code has not been audited for security risks and the implementation might not be correct.
USE AT YOUR OWN RISK!
Rust 1.56 or higher.
Crate is licensed under
Instantiate a SrpClient
, use get_auth_params
function for the SDK cognito idp initiate_auth
challenge response flow initiate step
Use process_challenge
to generate the response to the server challenge.
let srp_client = SrpClient::new();
let srp_client = SrpClient::new(
"COGNITO_USERNAME",
"COGNITO_PASSWORD",
"COGNITO_POOL_ID",
"COGNITO_CLIENT_ID",
None,
);
let auth_init_res = cognito_client
.initiate_auth()
.auth_flow(AuthFlowType::UserSrpAuth)
.client_id("cognito client id".to_string())
.set_auth_parameters(Some(srp_client.get_auth_params().unwrap()))
.send()
.await;
let auth_init_out = auth_init_res.unwrap();
let challenge_params =
auth_init_out
.challenge_parameters
.unwrap();
let challenge_responses =
srp_client.process_challenge(challenge_params).unwrap();
let password_challenge_result = cognito_client
.respond_to_auth_challenge()
.set_challenge_responses(Some(challenge_responses))
.client_id("cognito client id".to_string())
.challenge_name(ChallengeNameType::PasswordVerifier)
.send()
.await;
let password_challenge_response = password_challenge_result.unwrap();
A comprehensive example integrating with AWS SDK for rust is available here: https://github.com/lucdew/cognito-srp-auth
Only tested manually without any client secret.