0

有点多个问题,但是,Amazon Cognito AuthFlow

如何在.NET中使用Amazon Cognito用户池执行身份验证。 我发起验证下列要求:

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联合身份以保护自定义.NET API,所以我的想法是使用令牌返回由Cognito作为JWT传递到的WebAPI的一面,我在那里然后将解码并验证令牌。这是使用Amazon Cognito的预期方式吗? (至少现在我不想使用亚马逊API网关)。

我假设它只是配置默认的JWT中间件的OWIN,或者我应该预期别的吗?

+0

你侧面说明基本上是正确的:用户池给你非常相似的JWT令牌作为谷歌等......,并以同样的方式被身份池使用。 –

+0

关于SRP [这是一种标准算法](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol),但我还没有用C#与Cognito合作。 –

回答

0

developer guide涉及到了什么需要进入发起认证和响应认证挑战的请求。

您可能会发现使用AdminInitiateAuth API(详细介绍在同一链接中)可以更轻松地将srp身份验证卸载到Cognito,这将为您填充这些空白。

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

+1

'AdminInitiateAuth'不会“卸载srp认证” - 因此流程名称为'ADMIN_NO_SRP_AUTH'。 SRP是避免通过线路发送密码的算法,因此使用'AdminInitiateAuth'严格来说不太安全,尽管它基本上是互联网上每一个其他登录页面所做的。基本上它是用于服务器端的。 –

+0

它卸载它。认证服务器代表您执行srp,但要这样做需要用户名和密码作为事实上的客户端。文件可能不是非常明确,因为你的推论是公平的,但它确实减轻了负担。来源:我在认知团队 –

+0

这个名字背后的想法是,你不必做SRP,它看起来像互联网上的每个登录页面,但在后台它使用相同的后端存储,做所以通过利用SRP。 –

0

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

AWS Cognito SRP Login in C#/.NET

相关问题