当前位置: 首页 > 知识库问答 >
问题:

使用soto cognito认证工具包

韦志新
2023-03-14

我需要用AWS Cognito实现本机身份验证,我正试图在我的iOS应用程序(客户端)中使用https://github.com/adam-fowler/soto-cognito-authentication-kit。

我正在努力使用CognitoAuthenticatable对象来启动用户名/密码身份验证。

这是我的代码:

class LoginHandler {
    func handleLogin(username: String, password: String) {
        var eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)

        let data = AWSCognitoContext()
        let response = self.authenticatable.authenticate(
            username: username,
            password: password,
            requireAuthenticatedClient: false,
            clientMetadata: nil,
            context: data,
            on: eventLoopGroup.next()
        )

        response.flatMap { response in
            // use response object
        }
    }
}

class AWSCognitoContext: CognitoContextData {
    var contextData: CognitoIdentityProvider.ContextDataType? {
        return CognitoIdentityProvider.ContextDataType(
            httpHeaders: [],
            ipAddress: "",
            serverName: "",
            serverPath: "")
    }
}

[CNNVD]EventLoopFuture验证方法返回漏洞(CNNVD-200512-343)

  1. 如何处理authenticate方法的响应?我收到错误无法推断通用参数“NewValue”
  2. 如何构造CognitoContextData对象。我只想使用AWS服务器位置的默认值

共有1个答案

傅峻
2023-03-14

验证函数立即返回EventLoopFuture

response.whenComplete { result in
    switch result {
    case .failure(let error):
        process error ...
    case .success(let response):
        process authenticate response
    }
}

如果要处理响应对象,可以使用map。如

response.map { response -> NextObject in
    return CreateNextObject(from: response)
}

如果要将多个EventLoopFutures链接在一起,可以使用flatMap。如

response.flatMap { response -> EventLoopFuture<NextObject> in
    return CreateEventLoopFutureNextObject(from: response)
}

如果您遇到无法推断的问题错误,最好明确说明闭包返回的内容。

swift nio文档将为您提供更多信息https://apple.github.io/swift-nio/docs/current/NIO/Classes/EventLoopFuture.html

上下文数据用于向Cognito提供此身份验证请求来自何处的上下文。当要求AuthentiatedClient为false时,不会真正使用此选项。所以提供一个空的上下文是可以的。

还有一件事,您不应该在函数中创建EventLoopGroup。这是在创建线程,这可能很耗时,然后在所有进程完成后,您必须关闭它们。您可以在此处使用eventLoopGroupauthenticatable.configuration.CognotidP.eventLoopGroup

 类似资料:
  • tcpdump 在调试网络通信程序是tcpdump是必备工具。tcpdump很强大,可以看到网络通信的每个细节。如TCP,可以看到3次握手,PUSH/ACK数据推送,close4次挥手,全部细节。包括每一次网络收包的字节数,时间等。 使用方法 最简单的一个使用示例: sudo tcpdump -i any tcp port 9501 -i 参数指定了网卡,any表示所有网卡 tcp 指定仅监听TC

  • 这篇文档解释默认配置下Django认证系统的使用。这些配置已经逐步可以满足大部分常见项目对的需要,可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现。对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证。 Django的认证同时提供认证和授权,并通常统一称为认证系统,因为这些功能某些地方是耦合的。 User对象 User对象是认证系统的核心。它们通常表示与你的站点进行交互的用

  • 使用 Yubico 认证器 下载 Yubico 认证器(Yubico Authenticator),然后点击 File > Add. 如果屏幕上有二维码的话点击 Scan a QR code ,二维码通常使用图形表示下方链接格式的。 otpauth://totp/<email>?issuer=<issuer>&secret=<secret> Credential name:提供者的名字(比如 Gi

  • 问题内容: 想知道社区对各种可用的和免费的Java Profiler和性能分析工具有何看法。 问题答案: JProfiler对我们来说效果很好。 http://www.ej- technologies.com/products/jprofiler/overview.html

  • 问题内容: 我是新来的NFC Android和我一直在坚持了几天试图获得第4页至第7页 NTAG212的Mifare超轻与验证 ,我已经有PWD和PACK做 PWD_AUTH 基础上, NTAG212 文档。 我这样做 将PWD_AUTH命令发送到NFC后,我总是会收到错误消息。有人可以告诉我我在做什么错吗?我的方法正确吗?请帮忙。 注意:我已经阅读了NTAG212的文档很多次,搜索过google

  • 由来 在日常开发中,我们对身份证的验证主要是正则方式(位数,数字范围等),但是中国身份证,尤其18位身份证每一位都有严格规定,并且最后一位为校验位。而我们在实际应用中,针对身份证的验证理应严格至此。于是IdcardUtil应运而生。 IdcardUtil从3.0.4版本起加入Hutool工具家族,请升级至此版本以上可使用。 介绍 IdcardUtil现在支持大陆15位、18位身份证,港澳台10位身