AWS SDK for .NET를 사용한 Single Sign On - AWS SDK for .NET

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS SDK for .NET를 사용한 Single Sign On

AWS IAM Identity Center는 모든 AWS 계정 및 클라우드 애플리케이션에 대한 SSO 액세스를 중앙에서 쉽게 관리할 수 있는 클라우드 기반 Single Sign On(SSO) 서비스입니다. 자세한 내용은 IAM Identity Center 사용 설명서를 참조하세요.

SDK가 IAM Identity Center와 상호 작용하는 방식에 익숙하지 않은 경우 다음 정보를 참조하십시오.

상위 수준에서 SDK는 다음 패턴과 유사한 방식으로 IAM Identity Center와 상호 작용합니다.

  1. IAM Identity Center는 일반적으로 IAM Identity Center 콘솔을 통해 구성되며 SSO 사용자가 참여하도록 초대됩니다.

  2. 사용자 컴퓨터의 공유 AWS config 파일이 SSO 정보로 업데이트됩니다.

  3. 사용자는 IAM Identity Center를 통해 로그인하면 자신에게 구성된 AWS Identity and Access Management(IAM) 권한에 대한 단기 보안 인증 정보가 제공됩니다. 이 로그인은 AWS CLI와 같은 비 SDK 도구를 통해 시작하거나 .NET 애플리케이션을 통해 프로그래밍 방식으로 시작할 수 있습니다.

  4. 사용자는 작업을 계속합니다. SSO를 사용하는 다른 애플리케이션을 실행하는 경우 애플리케이션을 열기 위해 다시 로그인할 필요가 없습니다.

이 주제의 나머지 부분에서는 AWS IAM Identity Center 설정 및 사용에 대한 참조 정보를 제공합니다. SDK 인증 구성의 기본 SSO 설정보다 더 많은 추가 및 고급 정보를 제공합니다. AWS에서 SSO를 처음 사용하는 경우 먼저 해당 주제를 살펴보고 기본 정보를 찾은 다음, 다음 자습서를 통해 SSO가 실제로 어떻게 작동하는지 확인해 보는 것이 좋습니다.

이 주제는 다음 섹션을 포함하고 있습니다.

사전 조건

IAM Identity Center를 사용하기 전에 ID 소스를 선택하고 관련 AWS 계정 및 애플리케이션을 구성하는 등의 특정 작업을 수행해야 합니다. 추가 정보는 다음을 참조하세요.

  • 이러한 작업에 관한 일반적인 내용은 IAM Identity Center 사용 설명서시작하기를 참조하세요.

  • 특정 작업 예제에 대해서는 이 주제의 끝 부분에 있는 자습서 목록을 참조하세요. 하지만 자습서를 사용하기 전에 이 주제의 정보를 검토해야 합니다.

SSO 프로필 설정

관련 AWS 계정에 IAM Identity Center를 구성한 후에는 SSO에 대한 명명된 프로필을 사용자의 공유 AWS config 파일에 추가해야 합니다. 이 프로필은 AWS 액세스 포털에 연결하는 데 사용되며, 이는 사용자에 대해 구성된 IAM 권한에 대한 단기 보안 인증을 반환합니다.

공유 config 파일은 일반적으로 Windows에서 %USERPROFILE%\.aws\config, Linux 및 macOS에서 ~/.aws/config로 이름이 지정됩니다. 선호하는 텍스트 편집기를 사용하여 SSO용 새 프로필을 추가할 수 있습니다. 또는 aws configure sso 명령을 사용할 수 있습니다. 이 명령에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서IAM Identity Center 사용을 위한 AWS CLI 구성을 참조하세요.

새 프로필은 다음과 유사합니다.

[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 액세스 포털을 정의합니다. 나머지 두 설정은 한 쌍으로 합쳐서 사용자에 대해 구성된 권한을 정의합니다. 모든 4가지 설정은 필수입니다.

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를 통해 사용자에게 부여되는 권한을 정의합니다.

다음 절차는 이 설정의 값을 찾는 한 가지 방법입니다.

  1. IAM Identity Center 콘솔로 이동하여 AWS 계정 페이지를 여십시오.

  2. 세부 정보를 표시할 계정을 선택합니다. 선택한 계정은 SSO 권한을 부여하려는 SSO 사용자 또는 그룹이 포함된 계정입니다.

  3. 계정에 할당된 사용자 및 그룹 목록을 살펴보고 관심 있는 사용자 또는 그룹을 찾으십시오. sso_role_name 설정에서 지정하는 권한 세트는 이 사용자 또는 그룹과 관련된 세트 중 하나입니다.

이 설정에 값을 지정할 때는 Amazon 리소스 이름(ARN)이 아닌 권한 세트의 이름을 사용합니다.

권한 세트에는 IAM 정책 및 사용자 지정 권한 정책이 연결되어 있습니다. 자세한 내용은 IAM Identity Center 사용 설명서권한 세트를 참조하세요.

SSO 토큰 생성 및 사용

SSO를 사용하려면 사용자는 먼저 임시 토큰을 생성한 다음 해당 토큰을 사용하여 적절한 AWS 애플리케이션 및 리소스에 액세스해야 합니다. .NET 응용 프로그램의 경우 다음 방법을 사용하여 이러한 임시 토큰을 생성하고 사용할 수 있습니다.

  • 필요한 경우 먼저 토큰을 생성한 다음 토큰을 사용하는 .NET 애플리케이션을 생성합니다.

  • AWS CLI를 사용하여 토큰을 생성한 다음 이 토큰을 .NET 애플리케이션에서 사용합니다.

이러한 방법은 다음 섹션에 설명되어 있으며 자습서에서도 볼 수 있습니다.

중요

SSO 확인이 작동하려면 애플리케이션에서 다음 NuGet 패키지를 참조해야 합니다.

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

이러한 패키지를 참조하지 않으면 런타임 예외가 발생합니다.

이 섹션에서는 필요한 경우 임시 SSO 토큰을 생성한 다음 해당 토큰을 사용하여 .NET 애플리케이션을 만드는 방법을 보여줍니다. 이 프로세스에 대한 전체 자습서는 .NET 애플리케이션만 사용하는 SSO 자습서을 참조하세요.

프로그래밍 방식으로 SSO 토큰 생성 및 사용

AWS CLI를 사용하는 것 외에도 프로그래밍 방식으로 SSO 토큰을 생성할 수도 있습니다.

이를 위해 애플리케이션은 SSO 프로필용 AWSCredentials 객체를 생성합니다. 이 객체는 임시 보안 인증이 있는 경우 이를 로드합니다. 그런 다음 애플리케이션은 AWSCredentials 객체를 SSOAWSCredentials 객체로 캐스팅하고, 필요한 경우 사용자에게 로그인 정보를 요청하는 데 사용되는 콜백 메서드를 비롯한 일부 옵션 속성을 설정해야 합니다.

이 메서드는 다음 코드 조각에 나와 있습니다.

중요

SSO 확인이 작동하려면 애플리케이션에서 다음 NuGet 패키지를 참조해야 합니다.

  • 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를 ID 소스로 사용하는 경우 사용자에게 다음과 비슷한 로그인 페이지가 표시됩니다.

AWS IAM Identity Center 로그인 페이지.
참고

SSOAWSCredentials.Options.ClientName에 대해 제공하는 텍스트 문자열에는 공백이 있어서는 안 됩니다. 문자열에 공백이 있는 경우 런타임 예외가 발생합니다.

.NET 애플리케이션만 사용하는 SSO 자습서

이 섹션에서는 AWS CLI를 사용하여 임시 SSO 토큰을 생성하는 방법과 애플리케이션에서 해당 토큰을 사용하는 방법을 보여 줍니다. 이 프로세스에 대한 전체 자습서는 AWS CLI 및 .NET 애플리케이션을 사용하는 SSO 자습서을 참조하세요.

AWS CLI를 사용하여 SSO 토큰 생성

프로그래밍 방식으로 임시 SSO 토큰을 생성하는 것 외에도 AWS CLI를 사용하여 토큰을 생성합니다. 다음 정보에서 이 방법을 보여 줍니다.

사용자는 이전 섹션에 표시된 것처럼 SSO 지원 프로필을 만든 후 AWS CLI에서 aws sso login 명령을 실행합니다. SSO 지원 프로필의 이름과 함께 --profile 파라미터를 포함해야 합니다. 방법은 다음 예제와 같습니다:

aws sso login --profile my-sso-profile

현재 토큰이 만료된 후 새 임시 토큰을 생성하려는 경우 동일한 명령을 다시 실행할 수 있습니다.

생성된 SSO 토큰을 .NET 애플리케이션에서 사용하세요.

다음 정보는 이미 생성된 임시 토큰을 사용하는 방법을 보여줍니다.

중요

SSO 확인이 작동하려면 애플리케이션에서 다음 NuGet 패키지를 참조해야 합니다.

  • 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());
참고

애플리케이션이 SSO용 [default] 프로필을 사용하도록 빌드된 경우에는 임시 보안 인증을 로드하는 데 AWSCredentials을 사용할 필요가 없습니다. 이 경우 애플리케이션은 "var client = new AmazonS3Client();"와 마찬가지로 파라미터 없이 AWS 서비스 클라이언트를 만들 수 있습니다.

AWS CLI 및 .NET 애플리케이션을 사용하는 SSO 자습서

추가 리소스

추가 지원이 필요한 경우 다음 리소스를 참조하세요.