簡體   English   中英

使用 Java SDK 在代碼中嵌入 AWS IAM 憑證

[英]Embedding AWS IAM credentials in the code with the Java SDK

我正在使用 Java AWS IoT SDK,但我遇到了一個問題,我必須將我的 AWS IAM 訪問密鑰和密鑰憑證嵌入到我設備上的 Java 應用程序代碼中。

憑據最初僅用於在我的代碼中創建客戶端,然后使用 X.509 證書進行 MQTT 身份驗證和通信。 .

我聽說有一種方法可以通過使用AWSCredentialsProvider和令牌等來避免在代碼中嵌入 IAM 憑證的需要。但是,我沒有看到任何實際示例說明如何在不嵌入憑證的情況下實現這一點。 下面是我的代碼片段,顯示了我如何使用憑據創建客戶端對象。 謝謝。

String AWS_ACCESSKEY  = "AKXXXXXXXXXXXXX";           // not real key
String AWS_SECRETKEY  = "ABCXXXXXXXXXXXXXXXXXXXXXX"; // not real key
Regions AWS_REGION    = Regions.US_EAST_2;

AWSIot client = AWSIotClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(new 
BasicAWSCredentials(AWS_ACCESSKEY, AWS_SECRETKEY))).withRegion(AWS_REGION).build();

您可以將此憑據傳遞給普通的 application.properties 文件。

你只需要做兩件事。

  1. 創建帶有注釋 @ConfigurationProperties 和 @Configuration 的公共類 AwsCredentials。
  2. 將您的訪問權限和機密傳遞給 application.properties 文件

您可以在本教程中閱讀更多內容: 單擊

接下來當您想在 builder 中使用此屬性時,您需要像這樣調用它:

AWSIot client = AWSIotClientBuilder.standard()
    .withCredentials(
        new AWSStaticCredentialsProvider(
            new BasicAWSCredentials(
                this.awsCredentials.getAccessKey(),
                this.awsCredentials.getSecretKey()
            )
        )
    )
    .withRegion(AWS_REGION)
    .build();

附注。 您也可以將區域導出到屬性。

您可以使用臨時安全憑證而不是實際訪問密鑰。 請檢查此鏈接。 https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html

要獲取訪問 AWS IoT(或其他服務)的憑證,您可以從Cognito Identity Pool獲取臨時安全憑證。 您可以在此處找到獲取憑據所需的最簡單方法和步驟。

還要考慮到,要從Cognito 用戶池中獲取 idToken (JWT),然后訪問和秘密令牌Cognito Identity pool ,您需要在您的移動或桌面應用程序中使用 AWS Java SDK。 您可以在此處找到有關 AWS JAVA SDK 的更多信息,在此處此處此處找到一些示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM