2017-03-08 9 views
0

AWS에서 호스팅하지 않은 AWS API 게이트웨이 인증 메커니즘으로 응용 프로그램 풀이 페더레이션 ID가 아니라 AWS 데모 인증을위한 콘솔 POC를 작성 중입니다. 이것은 C#으로 작성되었습니다.인증 AWS Cognito SRP

사용자를 성공적으로 생성하여 확인했습니다. 하지만 이제는 통과 할 수 있고 다운 스트림을 확인할 수있는 JWT를 검색하기 위해 인증해야합니다. 타입

되지 않은 예외 'Amazon.CognitoIdentityProvider.Model.InvalidParameterException' 가

을 AWSSDK.Core.dll에서 발생

다음 코드

using (var client = new AmazonCognitoIdentityProviderClient()) 
      { 
       var initAuthRequest = new InitiateAuthRequest(); 
        initAuthRequest.AuthParameters.Add("USERNAME", username); 
        initAuthRequest.AuthParameters.Add("PASSWORD", password); 
        initAuthRequest.ClientId = clientId; 
        initAuthRequest.AuthFlow = AuthFlowType.USER_SRP_AUTH; 
        var response = client.InitiateAuth(initAuthRequest); 
        WriteLine("auth ok"); 
      } 

이 예외를 얻을

추가 정보 : 필수 매개 변수 SRP_A가 누락되었습니다.

SRP 헤더를 생성하는 dotnet sdk에서 방법을 찾을 수 없습니다. 아무도 도와 줄 수 있습니까?

감사 KH

답변

1

Cognito 사용자 풀은 .NET의 SDK에서 SRP 인증을 지원하지 않습니다. InitiateAuth API 호출에는 AuthFlowType.USER_SRP_AUTH을 사용할 수 없습니다.

USERNAME 및 PASSWORD를 사용하여 직접 로그인하려는 경우 AdminInitiateAuth API 및 ADMIN_NO_SRP_AUTH 흐름을 사용하는 Admin Authentication flow을 볼 수 있습니다.

2

Chetan에서 이미 언급했듯이 .NET SDK에서는 SRP 인증을 지원하지 않습니다. 그러나 SRP 절차의 일부 타사 구현을 사용하여 가능해야합니다 (here 참조).

Github에 대한 의견에 따르면이 코드가 작동해야합니다 (하지만 불행히도 사용자 정의 SRP 인증 구현이 작동하지 않지만 어쩌면 작동 할 수 있습니다).

0

AWS .NET SDK에 익숙하지 않은 서언을 원합니다. 그러나 다음은 유용한 통찰력을 제공 할 수 있습니다.

AWS는 JavaScript 코드 번호 amazon-cognito-identity-js에 Cognito ID 헬퍼 라이브러리를 제공합니다.이 파일에는 SRP를 계산하는 데 사용 된 로직이 포함되어 있으므로 AuthenticationHelper.js 파일을 구체적으로 검토 할 수 있습니다. 또한, "initiateAuth"API 메소드를 호출하는 데 필요한 매개 변수 인 SRP_A를 계산하는 메소드가 있습니다. 잘하면 앞으로 올바른 방향으로 나아갈 수 있습니다.

amazon-cognito-identity-js 라이브러리는 정밀도의 정확도에 영향을주는 JavaScript Number 데이터 형식의 고유성 문제를 해결하기 위해 큰 정수 라이브러리에 종속되어 있음을 알 수 있습니다. 주로 SRP 계산과 관련하여이 산술 문제가 .NET의 컨텍스트와 관련이 있는지 여부는 익숙하지 않으므로이 내용을 언급합니다.