다음을 통해 공유


자격 증명 보관을 사용하여 사용자 자격 증명 저장(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

자격 증명 보관은 사용자 자격 증명을 안전하게 저장 및 검색하고 사용자의 Microsoft 계정과 함께 사용자 자격 증명이 무료로 로밍될 수 있도록 하는 작업을 간소화합니다.

미디어 파일, 소셜 네트워킹 등의 보호된 리소스에 액세스하기 위해 서비스에 연결하는 앱이 있다고 가정합니다. 서비스에 각 사용자에 대한 로그인 정보가 필요합니다. 따라서 사용자의 사용자 이름 및 암호를 가져오는 UI를 앱에 빌드했습니다. 이 정보는 사용자를 서비스에 로그인시키는 데 사용됩니다. 모든 기능이 완벽하게 작동합니다.

이제 사용자가 앱을 사용할 때마다 로그인할 필요가 없도록 사용자 로그인 정보를 안전하게 저장하려고 합니다. 자격 증명 보관을 시작합니다. 자격 증명 보관 API를 간단히 몇 번 호출하면 사용자의 사용자 이름 및 암호를 저장하고, 다음에 사용자가 앱을 열 때 쉽게 검색하여 사용자를 로그인시킬 수 있습니다.

보안 저장소

자격 증명 보관이 앱에 제공하는 큰 이점은 사용자 자격 증명이 안전한 위치에 저장되고 자격 증명 정보가 디스크에 저장될 때 암호화되는 것입니다. 앱의 로컬 저장소에 있는 파일에 사용자 자격 증명을 저장할 수도 있지만 일반 텍스트로 사용자 자격 증명을 저장할 경우 상당한 보안 허점이 발생합니다. 사용자 시스템이 어떤 식으로든 손상되면 사용자의 사용자 이름 및 암호에 쉽게 액세스하고 조작할 수 있습니다. 자격 증명 보관을 사용하여 사용자 이름 및 암호를 저장할 경우 악성 소스로 얻을 수 있는 것은 기껏해야 암호화된 파일뿐입니다.

로밍 자격 증명

사용자를 위한 추가적인 혜택으로, 자격 증명 보관을 사용하여 사용자 이름 및 암호를 저장할 경우 저장된 자격 증명이 동일한 Microsoft 계정으로 사용하는 다른 신뢰할 수 있는 컴퓨터에 해당 Microsoft 계정과 함께 로밍됩니다. 이렇게 하면 앱에서 사용자에게 자격 증명을 묻는 메시지를 다시 표시하지 않고 앱이 설치되고 해당 Microsoft 계정과 연결된 신뢰할 수 있는 모든 컴퓨터에서 사용자를 자동으로 로그인할 수 있으므로 사용자가 보안 앱을 보다 편리하게 사용할 수 있습니다.

도메인 계정의 경우 약간 다른 방식으로 작동합니다. Microsoft 계정과 함께 저장된 자격 증명이 있으며 해당 계정을 도메인 계정(예: 회사에서 사용하는 계정)과 연결하는 경우 자격 증명이 도메인 계정에 로밍됩니다. 그러나 도메인 계정으로 로그온한 상태에서 추가된 새 자격 증명은 로밍되지 않습니다. 따라서 도메인의 개인 자격 증명은 도메인 외부에 노출되지 않습니다.

기술

지침

단계 1: 사용자 자격 증명 저장

두 단계로 이루어진 빠른 프로세스를 통해 자격 증명 보관에 사용자 자격 증명을 저장할 수 있습니다.

  1. Windows.Security.Credentials 네임스페이스의 PasswordVault 개체를 사용하여 자격 증명 보관 참조를 가져옵니다.
  2. 앱의 식별자, 사용자 이름 및 암호가 포함된 PasswordCredential 개체를 만들고 PasswordVault.Add 메서드에 전달하여 자격 증명을 보관에 추가합니다.
var vault = new Windows.Security.Credentials.PasswordVault();
vault.add(new Windows.Security.Credentials.PasswordCredential(
    "My App", username, password));

단계 2: 사용자 자격 증명 검색

PasswordVault 개체 참조를 가져온 후 자격 증명 보관에서 사용자 자격 증명을 검색하는 여러 가지 옵션이 있습니다.

  • PasswordVault.RetrieveAll 메서드를 사용하면 보관에서 앱에 대해 제공된 모든 자격 증명을 검색할 수 있습니다.

  • 저장된 자격 증명의 사용자 이름을 알고 있는 경우 PasswordVault.FindAllByUserName 메서드를 사용하여 해당 사용자 이름에 대한 모든 자격 증명을 검색할 수 있습니다.

  • 저장된 자격 증명의 리소스 이름을 알고 있는 경우 PasswordVault.FindAllByResource 메서드를 사용하여 해당 리소스 이름에 대한 모든 자격 증명을 검색할 수 있습니다.

  • 마지막으로, 자격 증명의 사용자 이름과 리소스 이름을 둘 다 알고 있는 경우 PasswordVault.Retrieve 메서드를 사용하여 해당 자격 증명만 검색할 수 있습니다.

앱에 전체적으로 리소스 이름을 저장했으며 해당 자격 증명이 있을 경우 사용자를 자동으로 로그인하는 예제를 살펴보겠습니다. 사용자에 대한 자격 증명이 여러 개 발견되면 로그온할 때 사용할 기본 자격 증명을 선택하라는 메시지가 표시됩니다.

var resourceName = "My App";
var defaultUserName;

function login() {
    var loginCredential = getCredentialFromLocker();

    if (loginCredential != null) {
        // There is a credential stored in the locker.
        // Populate the Password property of the credential
        // for automatic login.
        loginCredential.retrievePassword();
    } else {
        // There is no credential stored in the locker.
        // Display UI to get user credentials.
        loginCredential = getLoginCredentialUI();
    }

    // Log the user in.
    serverLogin(loginCredential.userName, loginCredential.password);
}


function GetCredentialFromLocker() {
    var credential = null;

    var vault = new Windows.Security.Credentials.PasswordVault();
    var credentialList = vault.findAllByResource(resourceName);
    if (credentialList.length > 0) {
        if (credentialList.length == 1) {
            credential = credentialList[0];
        } else {
            // When there are multiple usernames,
            // retrieve the default username. If one doesn’t
            // exist, display UI to have the user select
            // a default username.

            defaultUserName = getDefaultUserNameUI();
            credential = vault.retrieve(resourceName, defaultUserName);
        }
    }

    return credential;
}

단계 3: 사용자 자격 증명 삭제

두 단계로 이루어진 빠른 프로세스를 통해 자격 증명 보관에서 사용자 자격 증명을 삭제할 수도 있습니다.

  1. Windows.Security.Credentials 네임스페이스의 PasswordVault 개체를 사용하여 자격 증명 보관 참조를 가져옵니다.

  2. 삭제하려는 자격 증명을 PasswordVault.Remove 메서드에 전달합니다.

var vault = new Windows.Security.Credentials.PasswordVault();
vault.remove(new Windows.Security.Credentials.PasswordCredential(
    "My App", username, password));

설명

자격 증명 보관은 사용자를 인증하고 나중에 사용하기 위해 사용자 자격 증명을 저장하는 작업을 간소화하는 사용하기 쉬운 기능이며, 모든 작업이 안전한 방식으로 수행됩니다.

모범 사례

자격 증명 보관은 암호에만 사용하고 큰 데이터 blob에는 사용하지 않습니다.

다음 조건이 충족되는 경우에만 암호를 자격 증명 보관에 저장합니다.

  • 사용자가 로그인했습니다.
  • 사용자가 암호를 저장하도록 선택했습니다.

관련 항목

자격 증명 보관 샘플

인증 및 사용자 ID

Windows.Security.Credentials