第 4 版 (V4) SDK for .NET 正在預覽!若要在預覽中查看此新版本的相關資訊,請參閱 AWS SDK for .NET (第 4 版預覽) 開發人員指南。
請注意,開發套件的 V4 處於預覽狀態,因此其內容可能會有所變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 的單一登入 AWS SDK for .NET
AWS IAM Identity Center 是一種雲端型單一登入 (SSO) 服務,可讓您輕鬆地集中管理對所有 AWS 帳戶 和雲端應用程式的 SSO 存取。如需完整詳細資訊,請參閱 IAM Identity Center 使用者指南。
如果您不熟悉 SDK 與 IAM Identity Center 的互動方式,請參閱下列資訊。
在高階,SDKs與 IAM Identity Center 的互動方式類似下列模式:
-
IAM Identity Center 已設定,通常透過 IAM Identity Center 主控台
設定,並邀請 SSO 使用者參與。 -
使用者電腦上的共用 AWS
config
檔案會更新為 SSO 資訊。 -
使用者透過 IAM Identity Center 登入,並取得已為其設定的 AWS Identity and Access Management (IAM) 許可的短期憑證。此登入可以透過非 SDK 工具啟動,例如 AWS CLI,或透過 .NET 應用程式以程式設計方式啟動。
-
使用者繼續執行其工作。當他們執行使用 SSO 的其他應用程式時,不需要再次登入即可開啟應用程式。
本主題的其餘部分提供設定和使用的參考資訊 AWS IAM Identity Center。它提供補充和比 中基本 SSO 設定更進階的資訊設定 SDK 身分驗證。如果您是 SSO on 的新手 AWS,建議您先查看該主題以取得基本資訊,然後在下列教學課程中查看 SSO 實際運作:
本主題包含下列章節:
先決條件
在使用 IAM Identity Center 之前,您必須執行特定任務,例如選擇身分來源和設定相關的 AWS 帳戶 和 應用程式。如需其他資訊,請參閱以下內容:
-
如需這些任務的一般資訊,請參閱《IAM Identity Center 使用者指南》中的入門。
-
如需特定任務範例,請參閱本主題結尾的教學課程清單。不過,請務必先檢閱本主題中的資訊,再嘗試教學課程。
設定 SSO 設定檔
在相關 中設定 IAM Identity Center 之後 AWS 帳戶,必須將 SSO 的具名設定檔新增至使用者的共用 AWS config
檔案。此設定檔用於連線至AWS 存取入口網站,這會針對已為使用者設定的 IAM 許可傳回短期憑證。
共用config
檔案通常%USERPROFILE%\.aws\config
在 Windows 和 Linux 和 macOS ~/.aws/config
中命名。您可以使用您偏好的文字編輯器來新增 SSO 的新設定檔。或者,您可以使用 aws configure sso
命令。如需此命令的詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的設定 AWS CLI 以使用 IAM Identity Center。
新設定檔類似下列內容:
[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 Identity Center 主控台
,選擇設定,然後尋找入口網站 URL。 sso_region
-
AWS 區域 包含存取入口網站主機的 。這是在您啟用 IAM Identity Center 時選取的區域。它可以不同於您用於其他任務的區域。
如需 AWS 區域 及其代碼的完整清單,請參閱《》中的區域端點Amazon Web Services 一般參考。
sso_account_id
-
透過 AWS Organizations 服務 AWS 帳戶 新增的 ID。若要查看可用帳戶的清單,請前往 IAM Identity Center 主控台
並開啟AWS 帳戶頁面。您為此設定選擇的帳戶 ID 將對應至您計劃提供給 sso_role_name
設定的值,如下所示。 sso_role_name
-
IAM Identity Center 許可集的名稱。此許可集定義使用者透過 IAM Identity Center 獲得的許可。
下列程序是尋找此設定值的一種方法。
-
前往 IAM Identity Center 主控台
並開啟AWS 帳戶頁面。 -
選擇帳戶以顯示其詳細資訊。您選擇的帳戶將包含您要為其提供 SSO 許可的 SSO 使用者或群組。
-
查看指派給帳戶的使用者和群組清單,並尋找感興趣的使用者或群組。您在設定中指定的許可集
sso_role_name
是與此使用者或群組相關聯的其中一個集。
將此值提供給此設定時,請使用許可集的名稱,而不是 Amazon Resource Name (ARN)。
許可集已將 IAM 政策和自訂許可政策連接到它們。如需詳細資訊,請參閱《IAM Identity Center 使用者指南》中的許可集。
-
產生和使用 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
物件,並設定一些選項屬性,包括在必要時用來提示使用者登入資訊的回呼方法。
此方法顯示在下列程式碼片段中。
重要
您的應用程式必須參考下列 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 Identity Center 做為身分來源,使用者會看到類似如下的登入頁面:

注意
您提供的文字字串SSOAWSCredentials.Options.ClientName
不能有空格。如果字串有空格,您會收到執行時間例外狀況。
本節說明如何使用 產生臨時 SSO 字符 AWS CLI,以及如何在應用程式中使用該字符。如需此程序的完整教學課程,請參閱 使用 AWS CLI 和 .NET 應用程式的 SSO 教學課程。
使用 產生 SSO 權杖 AWS CLI
除了以程式設計方式產生臨時 SSO 字符之外,您還可以使用 AWS CLI 來產生字符。下列資訊說明如何操作。
使用者建立啟用 SSO 的設定檔後,如上一節所示,他們會從 執行 aws sso login
命令 AWS CLI。它們必須確實包含 --profile
參數與啟用 SSO 設定檔的名稱。下列範例顯示這種情況:
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
為使用 SSO 的[default]
設定檔,則不需要使用 載入臨時憑證。在這種情況下,應用程式可以建立不含參數 AWS 的服務用戶端,類似於「var client = new AmazonS3Client();
」。
使用 AWS CLI 和 .NET 應用程式的 SSO 教學課程
其他資源
如需其他說明,請參閱下列資源。