單一登入 AWS SDK for .NET - AWS SDK for .NET

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

單一登入 AWS SDK for .NET

AWS IAM Identity Center是雲端式單一登入 (SSO) 服務,可讓您輕鬆集中管理所有AWS 帳戶和雲端應用程式的 SSO 存取。如需完整詳細資訊,請參閱 IAM 身分中心使用者指南

如果您不熟悉 SDK 如何與 IAM 身分中心互動,請參閱下列資訊。

在高層級上,SDK 會以類似下列模式的方式與 IAM 身分中心互動:

  1. IAM 身分中心通常是透過 IAM 身分中心主控台進行設定,並邀請 SSO 使用者參與。

  2. 使用者電腦上的共用AWSconfig檔案會更新為 SSO 資訊。

  3. 使用者透過 IAM 身分中心登入,並獲得為其設定的 AWS Identity and Access Management (IAM) 許可的短期登入資料。此登入可透過非 SDK 工具 (例如) 啟動AWS CLI,或透過 .NET 應用程式以程式設計方式啟動。

  4. 使用者繼續執行其工作。當他們執行其他使用 SSO 的應用程式時,不需要再次登入即可開啟應用程式。

本主題的其餘部分提供設定和使用的參考資訊AWS IAM Identity Center。它提供的資訊比中的基本 SSO 設定更為進階設定 SDK 驗證。如果您是 SSO on 的新手AWS,您可能想要先查看該主題以取得基本資訊,然後在下列教學課程中查看 SSO 的實際運作:

本主題包含下列章節:

必要條件

在使用 IAM 身分中心之前,您必須執行某些工作,例如選擇身分識別來源以及設定相關AWS 帳戶和應用程式。如需其他資訊,請參閱以下內容:

  • 如需這些工作的一般資訊,請參IAM 身分中心使用者指南中的入門

  • 如需特定工作範例,請參閱本主題結尾的自學課程清單。但是,在嘗試自學課程之前,請務必檢閱本主題中的資訊。

設定 SSO 設定檔

在相關設定 IAM 身分中心之後AWS 帳戶,必須將 SSO 的具名設定檔新增至使用者的共用AWSconfig檔案。此設定檔用於連線到AWS存取入口網站,該入口網站會傳回為使用者設定的 IAM 許可的短期登入資料。

共享config文件通常%USERPROFILE%\.aws\config在視窗和 Linux 和 macOS ~/.aws/config 中命名。您可以使用偏好的文字編輯器為 SSO 新增設定檔。或者,您可以使用aws configure sso指令。如需有關此命令的詳細資訊,請參閱使用AWS Command Line Interface者指南中的設定 AWS CLI 以使用 IAM 身分中心

新設定檔類似下列內容:

[profile my-sso-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-west-2 sso_account_id = 123456789012 sso_role_name = SSOReadOnlyRole

新設定檔的設定定義如下。前兩個設定定義AWS存取入口網站。其他兩個設定是結合在一起的組合,可定義為使用者設定的權限。所有四個設置都是必需的。

sso_start_url

指向組織AWS存取入口網站的 URL。若要尋找此值,請開啟 IAM 身分中心主控台,選擇 [設定],然後尋找入口網站 URL

sso_region

包AWS 區域含存取入口網站主機的。這是您啟用 IAM 身分中心時選取的區域。它可以與您用於其他任務的「區域」不同。

如需完整清單AWS 區域及其代碼,請參閱 Amazon Web Services 一般參考.

sso_account_id

透過AWS Organizations服務新增的識別碼。AWS 帳戶若要查看可用帳戶的清單,請前往 IAM 身分中心主控台並開啟AWS 帳戶頁面。您為此設定選擇的帳戶 ID 將與您計劃提供給sso_role_name設定的值相對應,接下來會顯示該值。

sso_role_name

IAM 身分中心權限集的名稱。此權限集定義使用者透過 IAM 身分中心授予的許可。

下列程序是尋找此設定值的一種方法。

  1. 前往 IAM 身分中心主控台並開啟AWS 帳戶頁面。

  2. 選擇一個帳戶以顯示其詳細信息。您選擇的帳戶將會是包含您要授與 SSO 權限之 SSO 使用者或群組的帳戶。

  3. 查看指派給帳戶的使用者和群組清單,並尋找感興趣的使用者或群組。您在sso_role_name設定中指定的權限集是與此使用者或群組相關聯的其中一個權限集。

為此設定指定值時,請使用權限集的名稱,而不是 Amazon 資源名稱 (ARN)。

許可集已附加 IAM 政策和自訂許可政策。如需詳細資訊,請參閱 IAM 身分中心使用者指南中的權限集。

產生及使用 SSO 權杖

若要使用 SSO,使用者必須先產生暫存權杖,然後使用該權杖存取適當的AWS應用程式和資源。對於 .NET 應用程序,您可以使用以下方法生成和使用這些臨時令牌:

  • 如有必要,請先建立產生權杖的 .NET 應用程式,然後使用權杖。

  • 使用產生權杖,AWS CLI然後在 .NET 應用程式中使用該權杖。

這些方法將在以下各節中進行描述,並在自學課程中展示。

重要

您的應用程式必須參考下列 NuGet 套件,以便 SSO 解析能夠運作:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

無法參考這些套件會導致執行階段例外狀況。

本節說明如何建立 .NET 應用程式,視需要產生暫時 SSO 憑證,然後使用該權杖。如需此程序的完整自學課程,請參閱〈〉僅使用 .NET 應用程式的 SSO 教學課程

以程式設計方式產生並使用 SSO 權杖

除了使用之外AWS CLI,您也可以透過程式設計方式產生 SSO 憑證。

若要這麼做,您的應用程式會為 SSO 設定檔建立AWSCredentials物件,如果有的話,會載入暫時認證。然後,您的應用程式必須將AWSCredentials物件轉換為SSOAWSCredentials物件,並設定一些 O ptions 屬性,包括在必要時用來提示使用者輸入登入資訊的回呼方法。

這種方法顯示在下面的代碼片段。

重要

您的應用程式必須參考下列 NuGet 套件,以便 SSO 解析能夠運作:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

無法參考這些套件會導致執行階段例外狀況。

static AWSCredentials LoadSsoCredentials() { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials("my-sso-profile", out var credentials)) throw new Exception("Failed to find the my-sso-profile profile"); var ssoCredentials = credentials as SSOAWSCredentials; ssoCredentials.Options.ClientName = "Example-SSO-App"; ssoCredentials.Options.SsoVerificationCallback = args => { // Launch a browser window that prompts the SSO user to complete an SSO sign-in. // This method is only invoked if the session doesn't already have a valid SSO token. // NOTE: Process.Start might not support launching a browser on macOS or Linux. If not, // use an appropriate mechanism on those systems instead. Process.Start(new ProcessStartInfo { FileName = args.VerificationUriComplete, UseShellExecute = true }); }; return ssoCredentials; }

如果無法使用適當的 SSO 權杖,則會啟動預設瀏覽器視窗,並開啟適當的登入頁面。例如,如果您使用 IAM 身分中心做為身分識別來源,使用者會看到類似下列內容的登入頁面:

AWS IAM Identity Center登錄頁面。
注意

您提供的文字字串不SSOAWSCredentials.Options.ClientName能包含空格。如果字符串確實有空格,你會得到一個運行時異常。

僅使用 .NET 應用程式的 SSO 教學課程

本節說明如何使用AWS CLI,以及如何在應用程式中使用該權杖來產生暫存 SSO 憑證。如需此程序的完整自學課程,請參閱〈〉使用AWS CLI和 .NET 應用程式的 SSO 教學課程

使用以產生 SSO 權杖 AWS CLI

除了以程式設計方式產生暫存 SSO 權杖之外,您還可以使用AWS CLI來產生權杖。以下信息向您展示了如何操作。

使用者建立啟用 SSO 的設定檔 (如上一節所示) 之後,他們會從執行aws sso login命令。AWS CLI他們必須確定包含具有 SSO 功能之設定檔名稱的--profile參數。下列範例顯示這種情況:

aws sso login --profile my-sso-profile

如果用戶想要在當前的臨時令牌過期後生成新的臨時令牌,他們可以再次運行相同的命令。

在 .NET 應用程式中使用產生的 SSO 權杖

下列資訊說明如何使用已產生的暫存權杖。

重要

您的應用程式必須參考下列 NuGet 套件,以便 SSO 解析能夠運作:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

無法參考這些套件會導致執行階段例外狀況。

您的應用程式會為 SSO 設定檔建立AWSCredentials物件,該物件會載入先前由AWS CLI. 這存取應用程式中的認證和設定檔與中顯示的方法類似,並具有以下格式:

static AWSCredentials LoadSsoCredentials() { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials("my-sso-profile", out var credentials)) throw new Exception("Failed to find the my-sso-profile profile"); return credentials; }

然後,該AWSCredentials對象被傳遞給服務客戶端的構造函數。例如:

var S3Client_SSO = new AmazonS3Client(LoadSsoCredentials());
注意

如果您AWSCredentials的應用程式已建置為使用[default]設定檔進行 SSO,則不需要使用載入臨時認證。在這種情況下,應用程式可以建立不含參數的AWS服務用戶端,類似於 var client = new AmazonS3Client(); ""。

使用AWS CLI和 .NET 應用程式的 SSO 教學課程

其他資源

如需其他說明,請參閱下列資源。