#cognito #amazon #client #session #storage #key #user

amazon_cognito_rust

Rust版本的Amazon Cognito客户端

5个版本

使用旧的Rust 2015

0.1.4 2017年10月15日
0.1.3 2017年10月5日
0.1.2 2017年9月28日
0.1.1 2017年9月26日
0.1.0 2017年9月26日

#666 in 身份验证

每月22次下载

MIT/Apache

52KB
930

Amazon Cognito客户端(Rust语言编写)

开发中...


用法

extern crate rusoto_core;
extern crate amazon_cognito_rust;

use rusoto_core::{DefaultCredentialsProvider, default_tls_client, Region};
use amazon_cognito_rust::{CognitoUserSession, CognitoUser, AuthDetails, AuthDelegate, Storage};

struct MyStorage {}
impl Storage for MyStorage {
    fn get_item(&self, key: &str) -> Option<String> {
        // read from somewhere
        None
    }
    fn set_item(&self, key: &str, val: &str) {
        // write to somewhere
    }
}

struct MyAuthDelegate {}
impl AuthDelegate for MyAuthDelegate {
    fn on_failure(&self, err: &CognitoError) {
        println!("failed to authenticate user - {:?}", err);
    }
    fn on_success(&self, session: &CognitoUserSession, confirmation_necessary: bool) {
        println!("ACCESS_TOKEN {}", session.access_token.get_jwt_token());
        println!("ID_TOKEN {}", session.id_token.get_jwt_token());
        println!("REFRESH_TOKEN {}", session.refresh_token.get_token().to_string());
    }
}

fn main() {
  let storage = MyStorage {};
  let user = CognitoUser::new(default_tls_client().unwrap(), &storage, USER_POOL_ID, CLIENT_ID, Region::UsEast1);
  user.authenticate_user(&AuthDetails::new(username, password, BTreeMap::new()), &MyAuthDelegate {}).unwrap();

  // to refresh session
  // user.refresh_session(refresh_token);
}

状态

  • SRP
  • 启动身份验证
  • 接收设备密钥、访问令牌
  • 用户身份验证
  • 刷新会话
  • 需要新密码
  • SMS MFS
  • 自定义挑战
  • 设备SRP身份验证

依赖项

~16–26MB
~520K SLoC