使用单点登录 (SSO)Amazon SDK for .NET - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用单点登录 (SSO)Amazon SDK for .NET

Amazon IAM Identity Center (successor to Amazon Single Sign-On)(IAM Identity Center) 是一项基于云的单点登录服务,可以轻松地集中管理所有Amazon Web Services 账户和云应用程序。有关完整详细信息,请参阅Amazon IAM Identity Center (successor to Amazon Single Sign-On)用户指南.

如果你不熟悉 SDK 如何与IAM Identity Center,请参阅以下信息。

从较高的层面上说,SDK 与互动IAM Identity Center以类似于以下模式的方式:

  1. IAM Identity Center已配置,通常是通过IAM Identity Center控制台,并邀请 SSO 用户参与。

  2. 共享Amazon config用户计算机上的文件已使用 SSO 信息进行更新。

  3. 用户通过登录IAM Identity Center并获得短期凭证Amazon Identity and Access Management已为他们配置的 (IAM) 权限。此登录可以通过非 SDK 工具启动,例如Amazon CLI,或者通过 .NET 应用程序以编程方式执行。

  4. 用户继续完成他们的工作。当他们运行其他正在使用的应用程序IAM Identity Center,他们不需要再次登录即可打开应用程序。

先决条件

使用前使用IAM Identity Center,您必须执行某些任务,例如选择身份源和配置相关Amazon Web Services 账户和应用程序。有关更多信息,请参阅以下内容:

  • 有关这些任务的一般信息,请参阅入门中的Amazon IAM Identity Center (successor to Amazon Single Sign-On)用户指南.

  • 有关具体任务示例,请参阅教程在此主题末尾处。但是,在试用教程之前,务必查看本主题中的信息。

设置 SSO 配置文件

晚于IAM Identity Center是已配置在相关Amazon Web Services 账户,必须将 SSO 的命名配置文件添加到用户的共享Amazon config文件。此配置文件用于连接到IAM Identity Center 用户门户,它返回为用户配置的 IAM 权限的短期证书。

共享config文件通常名为%USERPROFILE%\.aws\config在 Windows 中和~/.aws/config在 Linux 和 macOS 中。您可以使用您的首选文本编辑器为 SSO 添加新的配置文件。此外,您也可以使用aws configure sso命令。有关此命令的更多信息,请参阅配置Amazon要使用 CLIAmazon IAM Identity Center (successor to Amazon Single Sign-On)中的Amazon Command Line Interface用户指南.

此新配置文件类似于以下内容:

[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

下面定义了新配置文件的设置。前两个设置定义IAM Identity Center用户门户。另外两个设置是一对,它们合在一起定义了为用户配置的权限。所有四项设置都是必需的。

sso_start_url

指向组织的 URLIAM Identity Center 用户门户. 要查找此值,请打开IAM Identity Center控制台,选择设置,然后找用户门户 URL.

sso_region

这些区域有:Amazon Web Services 区域包含用户门户主机。这是在启用时选择的地区IAM Identity Center. 它可能与您用于其他任务的地区不同。

有关完整列表,请参阅Amazon Web Services 区域和他们的代码,请参阅区域终端节点中的Amazon Web Services 一般参考.

sso_account_id

的 IDAmazon Web Services 账户这是通过Amazon Organizations服务。要查看可用账户列表,请转至IAM Identity Center控制台打开Amazon Web Services 账户页. 您为此设置选择的账户 ID 将与您计划提供给sso_role_name设置,如下所示。

sso_role_name

一个名字IAM Identity Center权限集。此权限集定义了向用户授予的权限IAM Identity Center.

以下过程是查找此设置值的方法之一。

  1. 转至IAM Identity Center控制台打开Amazon Web Services 账户页.

  2. 选择一个帐户以显示其详细信息。您选择的帐户将是包含要向其授予 SSO 权限的 SSO 用户或组的帐户。

  3. 查看分配给该帐户的用户和组列表,然后找到感兴趣的用户或组。您在sso_role_nameset 是与此用户或组关联的集合之一。

为此设置提供值时,使用权限集的名称,而不是 Amazon 资源名称 (ARN)。

权限集具有附加 IAM 策略和自定义权限策略。有关更多信息,请参阅 。权限集中的Amazon IAM Identity Center (successor to Amazon Single Sign-On)用户指南.

生成和使用 SSO 令牌

使用IAM Identity Center,用户必须首先生成临时令牌,然后使用该令牌访问相应的令牌Amazon应用程序和资源。对于 .NET 应用程序,您可以使用以下方法生成和使用这些临时令牌:

  • 使用生成令牌Amazon CLI然后在 .NET 应用程序中使用令牌。

  • 如有必要,创建首先生成令牌的 .NET 应用程序,然后使用令牌。

以下部分将介绍这些方法,并在教程.

本节介绍如何使用生成临时 SSO 令牌。Amazon CLI,以及如何在应用程序中使用该令牌。有关此过程的完整教程,请参阅适用于 的 教程IAM Identity Center使用Amazon CLI和 .NET 应用程序.

通过使用Amazon CLI

以下信息说明如何使用Amazon CLI生成临时令牌供以后使用。

用户创建启用 SSO 的配置文件后,如上一节,他们运行aws sso login从命令执行Amazon CLI. 必须确保包含--profile具有启用 SSO 的配置文件名称的参数。如下例所示:

aws sso login --profile my-sso-profile

如果用户想在当前临时令牌过期后生成新的临时令牌,他们可以再次运行同一命令。

在 .NET 应用程序中使用生成的 SSO 令牌

以下信息显示了如何使用已生成的临时令牌。

重要

您的申请必须参考以下内容 NuGet 软件包以便 SSO 解析能够起作用:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

如果不参考这些软件包将导致运行时间例外。

你的应用程序创建AWSCredentialsSSO 配置文件的对象,该对象加载之前由Amazon 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 的配置文件。在这种情况下,应用程序可以创建Amazon没有参数的服务客户端,类似于”var client = new AmazonS3Client();“。

适用于 的 教程IAM Identity Center使用Amazon CLI和 .NET 应用程序

本节介绍如何创建一个 .NET 应用程序,如有必要,可以生成临时 SSO 令牌,然后使用该令牌。有关此过程的完整教程,请参阅适用于 的 教程IAM Identity Center仅使用 .NET 应用程序.

以编程方式生成和使用 SSO 令牌

除了使用Amazon CLI,您还可以以编程方式生成 SSO 令牌。

要执行此操作,您的应用程序将创建AWSCredentialsSSO 配置文件的对象,该配置文件加载临时证书(如果有可用)。然后,你的应用程序必须投射AWSCredentials对象到SSOAWSCredentials对象并设置一些选项属性,包括用于提示用户输入登录信息的回调方法(如有必要)。

以下代码示例说明此方法:

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作为身份来源,用户看到类似以下内容的登录页面:


              Amazon IAM Identity Center (successor to Amazon Single Sign-On)登录页面。
注意

你提供的文本字符串SSOAWSCredentials.Options.ClientName不能有空格。如果字符串确实有空格,您将获得运行时间例外。

适用于 的 教程IAM Identity Center仅使用 .NET 应用程序

其他资源

有关其他帮助,请参阅以下资源。