2017-03-08 133 views
0

AWSでホストされていないAPIゲートウェイの認証メカニズムとして、アプリケーションプールがフェデレーションIDではなく、AWSコグニート認証をデモンストレーションするコンソールPOCを作成しています。これはC#で書かれています。認証AWS Cognito SRP

私は正常にユーザーを作成し、確認しました。しかし、私はJWTを取得するために認証する必要があります.JWTを渡して下流で検証することができます。

次のコード

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"); 
      } 

はこの例外を生じる:

タイプ 'Amazon.CognitoIdentityProvider.Model.InvalidParameterException' の未処理の例外がAWSSDK.Core.dll

に発生しました

追加情報:必須パラメータSRP_Aがありません

私はSRPヘッダーを生成する方法のドットネット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が述べたように、SRP認証は.NET SDKではサポートされていません。しかし、SRP手順の第三者実装を使用することで可能になるはずです。これはhereです。

Githubに関するいくつかのコメントによると、このコードはうまくいくはずです(しかし残念ながら、カスタムSRP認証の実装は私のためには機能しませんでしたが、おそらくあなたのために働くかもしれません)。

0

AWS .NET SDKに慣れていない序文を書きます。しかし、以下は有用な洞察を提供するかもしれません。

AWSはJavaScriptでamazon-cognito-identity-jsのCognito IDヘルパーライブラリを提供しています。具体的にはAuthenticationHelper.jsファイルにSRPの計算に使用されるロジックが含まれていることを確認できます。さらに、「initiateAuth」APIメソッドを呼び出すために必要なパラメータであるSRP_Aを計算する方法もあります。うまくいけば、これはあなたが正しい方向に前進するのに役立ちます。

amazon-cognito-identity-jsライブラリは、精度の精度に影響を与えるJavaScript Numberデータ型に固有の重要性の問題を処理するために、大きな整数ライブラリに依存していることがあります。主に、この算術問題がSRP計算に関連するため、.NETのコンテキストで適切かどうかはわかりません。

関連する問題