Amazon Cognito AuthFlow

时间:2017-01-14 10:12:49

标签: .net amazon-web-services asp.net-web-api amazon-ec2 amazon-cognito

有点多问题,但是,

如何使用.NET中的Amazon Cognito用户池执行身份验证。 我正在使用以下内容启动Auth:

var response1 = client.InitiateAuth(new InitiateAuthRequest()
            {
                AuthFlow = AuthFlowType.USER_SRP_AUTH,
                AuthParameters = new Dictionary<string, string>()
                {
                    {"USERNAME","User" },
                    {"SRP_A"  ,  A }
                },
                ClientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
            });

他们的文件非常非常糟糕,当我想回应挑战时,我似乎无法找到要通过的内容。

client.RespondToAuthChallenge(new RespondToAuthChallengeRequest()
        {
            ChallengeName = ChallengeNameType.PASSWORD_VERIFIER,
            ChallengeResponses = { /*WHAT am I supposed to add here, and where can I find any documnetation on what is expected?*/ },
            Session =  response1.Session,
            ClientId = "xxxxxxxxxxxxx"
        });

另一方面,我想使用Cognito Federated Identities来保护自定义.Net API,所以我的想法是使用Cognito返回的令牌作为JWT传递到webapi端,然后我将解码并验证令牌。这是使用Amazon Cognito的预期方式吗? (我现在至少不想使用亚马逊API网关)。

我假设它只是使用默认的JWT中间件配置OWIN,或者我应该期待别的什么?

2 个答案:

答案 0 :(得分:0)

developer guide触及了启动身份验证和响应身份验证质询请求的内容。

您可能会发现使用AdminInitiateAuth API(详细信息在同一链接中)将srp身份验证卸载到Cognito更容易,这将为您填写这些空白。

移动SDK为您提供了围绕SRP身份验证的包装器,这有助于填写这些参数,但其他SDK没有这样的功能。您可以使用SDK的代码(所有这些代码都存在于GitHub中)来填充SRP_A之类的内容,但您可能会发现使用AdminInitiateAuth会更容易。

答案 1 :(得分:0)

这里的人介绍了如何在.NET应用程序中进行SRP计算。我不得不添加一些逻辑来更新在控制台中创建用户时发出的临时密码,但除此之外它就像魅力一样

AWS Cognito SRP Login in C# / .NET