

 AWS SDK for .NET V3가 유지 관리 모드로 전환되었습니다.

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)로 마이그레이션하는 것이 좋습니다. 마이그레이션 방법에 대한 자세한 내용과 정보는 [유지 관리 모드 공지](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)를 참조하세요.

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

# AWS SDK for .NET를 사용한 Single Sign On
<a name="sso"></a>

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

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

## 전반적인 상호 작용 패턴
<a name="w2aac13b7b7b1"></a>

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

1. IAM Identity Center는 일반적으로 [IAM Identity Center 콘솔](https://console.aws.amazon.com/singlesignon)을 통해 구성되며 SSO 사용자가 참여하도록 초대됩니다.

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

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

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

이 주제의 나머지 부분에서는 AWS IAM Identity Center 설정 및 사용에 대한 참조 정보를 제공합니다. [SDK 인증 구성](creds-idc.md)의 기본 SSO 설정보다 더 많은 추가 및 고급 정보를 제공합니다. AWS에서 SSO를 처음 사용하는 경우 먼저 해당 주제를 살펴보고 기본 정보를 찾은 다음, 다음 자습서를 통해 SSO가 실제로 어떻게 작동하는지 확인해 보는 것이 좋습니다.
+ [자습서: .NET 애플리케이션 전용](sso-tutorial-app-only.md)
+ [자습서: AWS CLI 및 .NET 애플리케이션](sso-tutorial-cli-and-app.md)

이 주제는 다음 섹션을 포함하고 있습니다.
+ [사전 조건](#sso-prereq)
+ [SSO 프로필 설정](#sso-profiles)
+ [SSO 토큰 생성 및 사용](#sso-generate-use-token-overview)
+ [추가 리소스](#sso-resources)
+ [튜토리얼](#sso-tutorial-links)

## 사전 조건
<a name="sso-prereq"></a>

IAM Identity Center를 사용하기 전에 ID 소스를 선택하고 관련 AWS 계정 및 애플리케이션을 구성하는 등의 특정 작업을 수행해야 합니다. 추가 정보는 다음을 참조하세요.
+ 이러한 작업에 관한 일반적인 내용은 *IAM Identity Center 사용 설명서*의 [시작하기](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)를 참조하세요.
+ 특정 작업 예제에 대해서는 이 주제의 끝 부분에 있는 자습서 목록을 참조하세요. 하지만 자습서를 사용하기 전에 이 주제의 정보를 검토해야 합니다.

## SSO 프로필 설정
<a name="sso-profiles"></a>

관련 AWS 계정에 IAM Identity Center를 [구성](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)한 후에는 SSO에 대한 명명된 프로필을 사용자의 공유 AWS `config` 파일에 추가해야 합니다. 이 프로필은 *[AWS 액세스 포털](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html)*에 연결하는 데 사용되며, 이는 사용자에 대해 구성된 IAM 권한에 대한 단기 보안 인증을 반환합니다.

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

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

```
[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 액세스 포털](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html)을 가리키는 URL입니다. 이 값을 찾으려면 [IAM Identity Center 콘솔](https://console.aws.amazon.com/singlesignon)을 열고 **설정**을 선택한 다음 **포털 URL**을 찾으십시오.

**`sso_region`**  
액세스 포털 호스트가 포함된 AWS 리전입니다. 이것은 IAM Identity Center를 활성화할 때 선택한 리전입니다. 다른 작업에 사용하는 리전과 다를 수도 있습니다.  
AWS 리전 및 해당 코드의 전체 목록은 *Amazon Web Services 일반 참조*의 [리전 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)를 참조하세요.

**`sso_account_id`**  
AWS Organizations 서비스를 통해 추가된 AWS 계정의 ID입니다. 사용 가능한 계정 목록을 보려면 [IAM Identity Center 콘솔](https://console.aws.amazon.com/singlesignon)로 이동하여 **AWS 계정** 페이지를 여십시오. 이 설정에 대해 선택하는 계정 ID는 `sso_role_name` 설정에 부여하려는 값(다음에 표시됨)과 일치합니다.

**`sso_role_name`**  
IAM Identity Center 권한 세트의 이름입니다. 이 권한 세트는 IAM Identity Center를 통해 사용자에게 부여되는 권한을 정의합니다.  
다음 절차는 이 설정의 값을 찾는 한 가지 방법입니다.  

1. [IAM Identity Center](https://console.aws.amazon.com/singlesignon) 콘솔로 이동하여 **AWS 계정** 페이지를 여십시오.

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

1. 계정에 할당된 사용자 및 그룹 목록을 살펴보고 관심 있는 사용자 또는 그룹을 찾으십시오. `sso_role_name` 설정에서 지정하는 권한 세트는 이 사용자 또는 그룹과 관련된 세트 중 하나입니다.
이 설정에 값을 지정할 때는 Amazon 리소스 이름(ARN)이 아닌 권한 세트의 이름을 사용합니다.  
권한 세트에는 IAM 정책 및 사용자 지정 권한 정책이 연결되어 있습니다. 자세한 내용은 *IAM Identity Center 사용 설명서*의 [권한 세트](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsets.html)를 참조하세요.

## SSO 토큰 생성 및 사용
<a name="sso-generate-use-token-overview"></a>

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

이러한 방법은 다음 섹션에 설명되어 있으며 [자습서](#sso-tutorial-links)에서도 볼 수 있습니다.

**중요**  
SSO 확인이 작동하려면 애플리케이션에서 다음 NuGet 패키지를 참조해야 합니다.  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
이러한 패키지를 참조하지 않으면 *런타임* 예외가 발생합니다.

### .NET 애플리케이션만 해당
<a name="sso-generate-use-token-app-only-summary"></a>

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

#### 프로그래밍 방식으로 SSO 토큰 생성 및 사용
<a name="sso-generate-token-prog"></a>

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

이를 위해 애플리케이션은 SSO 프로필용 [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html) 객체를 생성합니다. 이 객체는 임시 보안 인증이 있는 경우 이를 로드합니다. 그런 다음 애플리케이션은 `AWSCredentials` 객체를 [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSSOAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSSOAWSCredentials.html) 객체로 캐스팅하고, 필요한 경우 사용자에게 로그인 정보를 요청하는 데 사용되는 콜백 메서드를 비롯한 일부 [옵션](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSSOAWSCredentialsOptions.html) 속성을 설정해야 합니다.

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

**중요**  
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 로그인 페이지.](http://docs.aws.amazon.com/ko_kr/sdk-for-net/v3/developer-guide/images/SSO-login.png)


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

[.NET 애플리케이션만 사용하는 SSO 자습서](sso-tutorial-app-only.md)

### AWS CLI 및 .NET 애플리케이션
<a name="sso-generate-use-token-cli-and-app-summary"></a>

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

#### AWS CLI를 사용하여 SSO 토큰 생성
<a name="sso-generate-token-cli"></a>

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

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

```
aws sso login --profile {{my-sso-profile}}
```

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

#### 생성된 SSO 토큰을 .NET 애플리케이션에서 사용하세요.
<a name="sso-use-profile-dotnet"></a>

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

**중요**  
SSO 확인이 작동하려면 애플리케이션에서 다음 NuGet 패키지를 참조해야 합니다.  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
이러한 패키지를 참조하지 않으면 *런타임* 예외가 발생합니다.

애플리케이션은 SSO 프로필에 대한 [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html) 객체를 생성하며, 이 객체는 AWS CLI에서 이전에 생성한 임시 보안 인증을 로드합니다. 이는 [애플리케이션에서 자격 증명 및 프로필에 액세스](creds-locate.md)에 표시된 방법과 유사하며 형식은 다음과 같습니다.

```
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 자습서](sso-tutorial-cli-and-app.md)

## 추가 리소스
<a name="sso-resources"></a>

추가 지원이 필요한 경우 다음 리소스를 참조하세요.
+ [IAM Identity Center란 무엇입니까?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
+ [IAM Identity Center를 사용하도록 AWS CLI 구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html#sso-configure-profile)
+ [의 IAM Identity Center 보안 인증 정보 사용AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/sso-credentials.html)

## 튜토리얼
<a name="sso-tutorial-links"></a>

**Topics**
+ [사전 조건](#sso-prereq)
+ [SSO 프로필 설정](#sso-profiles)
+ [SSO 토큰 생성 및 사용](#sso-generate-use-token-overview)
+ [추가 리소스](#sso-resources)
+ [튜토리얼](#sso-tutorial-links)
+ [자습서: .NET 애플리케이션 전용](sso-tutorial-app-only.md)
+ [자습서: AWS CLI 및 .NET 애플리케이션](sso-tutorial-cli-and-app.md)