2017-03-08 181 views
0

我正在編寫一個控制檯POC來演示AWS認證身份驗證 - App Pool未聯合身份,作爲我們的API網關身份驗證機制(不在AWS中託管)。這是用C#編寫的。身份驗證AWS Cognito SRP

我已經成功創建了一個用戶,確認了他們;但現在我需要進行身份驗證以檢索我可以傳遞和驗證下游的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標題的dotnet sdk的方式,任何人都可以幫忙嗎?

感謝 KH

回答

1

Cognito用戶池不支持從.NET SDK SRP認證。您將無法將AuthFlowType.USER_SRP_AUTHInitiateAuth API調用一起使用。

如果您想直接使用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中的Cognito身份助手庫amazon-cognito-identity-js您可以查看源代碼,具體爲AuthenticationHelper.js文件,因爲它包含用於計算SRP的邏輯。此外,還有一種計算SRP_A的方法,SRP_A是調用「initiatorAuth」API方法所需的參數。希望這有助於你朝正確的方向前進。作爲一個說明,您可能注意到amazon-cognito-identity-js庫依賴於一個大整數庫來處理JavaScript Number數據類型固有的重要性問題,這會影響精度的準確性。首先,我提到這一點,因爲我不熟悉這個算術問題在.NET環境下是否與SRP計算相關。

相關問題