第 4 版 (V4) 適用於 .NET 的 AWS SDK 已發行!
如需有關中斷變更和遷移應用程式的資訊,請參閱遷移主題。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 的單一登入 適用於 .NET 的 AWS SDK
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 設定更進階的資訊使用 驗證 AWS。如果您是 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。
新設定檔類似下列內容:
[profilemy-sso-profile] sso_start_url =https://my-sso-portal.awsapps.com/startsso_region =us-west-2sso_account_id =123456789012sso_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 themy-sso-profileprofile"); 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 }); }; ssoCredentials.Options.SupportsGettingNewToken = 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。它們必須確實包含具有啟用 SSO 設定檔名稱的 --profile 參數。下列範例顯示這種情況:
aws sso login --profilemy-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 themy-sso-profileprofile"); return credentials; }
AWSCredentials 物件接著會傳遞至服務用戶端的建構函式。例如:
var S3Client_SSO = new AmazonS3Client(LoadSsoCredentials());
注意
如果您的應用程式已建置AWSCredentials為使用 SSO 的[default]設定檔,則不需要使用 載入暫時登入資料。在這種情況下,應用程式可以建立沒有參數 AWS 的服務用戶端,類似於「var client = new AmazonS3Client();」。
其他資源
如需其他說明,請參閱下列資源。