자주 묻는 질문 App ID

이 FAQ에서는 IBM Cloud® App ID 서비스에 대한 일반적인 질문의 답을 제공합니다.

내 경로 재지정 URI를 허용 목록으로 지정해야 하는 이유는 무엇입니까?

경로 재지정 URI는 애플리케이션의 콜백 엔드포인트입니다. URI를 허용 목록으로 지정하면 App ID이(가) 해당 위치로 사용자를 전송하도록 허용합니다. 런타임 시 App ID은(는) 사용자를 경로 재지정하기 전에 사용자의 허용 목록에 대해 URI를 유효성 검증합니다. 이 프로세스를 사용하면 피싱 공격을 방지하고 공격자가 사용자의 토큰에 액세스할 수 있는 가능성이 줄어들 수 있습니다. 경로 재지정 URI에 대한 자세한 정보는 경로 재지정 URI 추가를 참조하십시오.

URL에 조회 매개변수를 포함하지 마십시오. 이는 유효성 검증 프로세스에서 무시됩니다. URL 예제: http://host:[port]/path

App ID에서 암호화가 어떻게 작동합니까?

암호화에 대한 자주 묻는 질문의 답변은 다음 표를 확인하십시오.

App ID 암호화를 처리하는 방법에 대해 자주 묻는 질문과 답변
질문 답변
암호화를 사용하는 이유는 무엇입니까? 사용자의 정보를 보호하는 한 가지 방법은 저장 및 전송 중인 고객 데이터를 암호화하는 것입니다. 이 서비스에서는 테넌트 키별로 고객의 저장된 데이터를 암호화하고 모든 네트워크 세그먼트에서 TLS 1.2+를 강제 시행합니다.
App ID에서 사용되는 알고리즘은 무엇입니까? 서비스에서는 솔트(salt)와 함께 AESSHA-256을 사용합니다.
공용 또는 오픈 소스 암호화 모듈이나 제공자를 사용합니까? 암호화 기능을 노출한 적이 있습니까? 서비스에서는 avax.crypto Java 라이브러리를 사용하지만 암호화 기능을 노출하지 않습니다.
키는 어떻게 저장됩니까? 키는 생성되어 각각의 지역에 특정한 마스터 키로 암호화된 후 로컬로 저장됩니다. 마스터 키는 Key Protect에 저장됩니다. 각 지역에는 Key Protect에 저장되는 고유 신뢰 루트 키가 있으며, 이 키는 HSM에서 백업합니다. 각 서비스 인스턴스(테넌트)에는 지역의 키 루트 신뢰를 사용하여 암호화되는 고유 데이터 암호화 및 토큰 서명 키가 있습니다.
사용자는 키 등급은 무엇입니까? 서비스에서는 16바이트를 사용합니다.
암호화 기능을 노출하는 원격 API를 호출합니까? 아니오, 호출하지 않습니다.

App ID에서 사용하는 클럭 동기화는 무엇입니까?

App ID가 내부 NTP 서버, servertime.service.softlayer.com을 사용하는 IBM Cloud에서 실행됩니다.

애플리케이션과 App ID 시간 소스의 동기화는 애플리케이션을 실행하는 환경에 따라 다릅니다.

  • 애플리케이션이 IBM Cloud Classic Infrastructure에서 실행되면 NTP 서버를 servertime.service.softlayer.com으로 설정하십시오.
  • 애플리케이션이 IBM Cloud VPC Infrastructure에서 실행되면 NTP 서버를 time.adn.networklayer.com으로 설정하십시오.
  • 애플리케이션이 IBM Cloud에서 실행 중이 아닌 경우 이러한 시간 서버에 대한 액세스 권한이 없습니다. 이 경우, NTP 서버를 time-a.nist.gov 또는 time-b.nist.gov로 설정하십시오.

App ID와 Keycloak 간의 차이점은 무엇입니까?

App ID와 Keycloak은 모두 애플리케이션에 인증을 추가하고 서비스를 보안 설정하는 데 사용할 수 있습니다. 두 오퍼링 간의 주요한 차이점은 패키징 방식입니다.

Keycloak은 소프트웨어로 패키징됩니다. 즉, 사용자가 다운로드한 이후에 제품 기능을 유지보수할 책임은 개발자에게 있습니다. 호스팅, 고가용성, 준수, 백업, DDoS 보호, 로드 밸런싱, 웹 방화벽, 데이터베이스에 대한 책임은 사용자에게 있습니다.

App ID는 "서비스로" 제공되는 완전히 관리되는 오퍼링입니다. 이는 IBM이 서비스의 조작을 처리하고 준수, 여러 구역의 가용성, SLA 등을 처리함을 의미합니다. App ID에는 기본 런타임 및 서비스(예: Kubernetes Service, Cloud Functions 및 Activity Tracker)를 포함하는 IBM Cloud 플랫폼과 통합된 경험이 있습니다.

둘 이상의 애플리케이션에서 동일한 클라이언트 ID를 사용할 수 있습니까?

기술적으로 _can_이(가) 둘 이상의 애플리케이션에서 동일한 인증 정보를 사용하는 동안에는 여러 가지 이유로 인해 수행하지 않는 것이 좋습니다. 첫 번째 이유는 애플리케이션에서 ID를 공유할 때 모든 유형의 공격이나 손상이 하나의 애플리케이션이 아닌 전체 환경에 영향을 미치기 때문입니다. 예를 들어, 세 개의 애플리케이션에서 ID를 사용한 상태에서 하나의 애플리케이션이 손상되면 세 개 모두가 손상됩니다. 공격자는 사용자의 앱을 위장할 수 있습니다. 두 번째 이유는 여러 앱에서 동일한 클라이언트 ID를 사용하는 경우 애플리케이션을 구별할 방법이 없다는 점입니다. 예를 들어 토큰을 생성하는 데 사용한 앱을 알 수 없습니다.

데이터 손실 없이 새 서비스 인스턴스를 사용하도록 내 애플리케이션을 업데이트할 수 있는 방법은 무엇입니까?

App ID의 한 인스턴스에서 다른 인스턴스로 정보를 마이그레이션할 수 있습니다.

  1. 서비스 인스턴스를 작성하십시오.
  2. GUI를 사용하여 ID 제공자 구성을 복제하십시오.
  3. 사용자 프로파일을 마이그레이션하십시오. 알려진 사용자를 JSON 오브젝트로 내보냅니다. 익명의 사용자는 마이그레이션할 수 없습니다. 전체 오브젝트를 새 인스턴스로 가져오도록 선택하거나 인스턴스가 두 개 이상인 경우 적절하게 사용자를 구분하여 나눌 수 있습니다. Cloud Directory의 경우 사용자 마이그레이션을 참조하십시오. 연합 ID 제공자의 경우 다음 단계를 사용하십시오.
  4. 새 서비스 인스턴스를 호출하기 위해 애플리케이션 인증 정보를 작성하십시오.
    1. 서비스 대시보드에서 애플리케이션 탭으로 이동하십시오.
    2. 애플리케이션 추가를 클릭하고 애플리케이션에 이름을 부여하십시오. 그런 다음 저장을 클릭하십시오.
    3. 표에서 인증 정보 보기를 클릭하고 출력을 복사하십시오.
    4. 새 인증 정보를 애플리케이션에 붙여넣으십시오.
  5. URL 등의 새 인증 정보를 사용하도록 애플리케이션을 업데이트하십시오.
  6. 구성에 따라 애플리케이션을 다시 배치하거나 바인드를 해제하고 리바인드해야 할 수도 있습니다.

App ID을(를) 사용하여 로그아웃을 구성할 수 있습니까?

애플리케이션 구성 방법에 따라 App ID를 통해 사용자를 위한 로그아웃 기능을 쉽게 사용할 수 있습니다. 로그아웃의 기능이 사용 가능한 위치를 보려면 다음 표를 참조하십시오.

로그아웃 기능 옵션
설명
App ID SDK App ID SDK에는 기본 제공된 로그아웃 기능이 있습니다.
Cloud Directory SSO[1] App ID은(는) Cloud Directory SSO 기능에 적합한 기본 제공된 로그아웃 기능을 제공합니다.
Ingress Ingress는 기본 제공된 로그아웃 기능을 제공합니다.
Istio Istio 어댑터는 OIDC를 통해 로그아웃 기능을 제공하도록 구성됩니다.

로그아웃 구성

로그아웃을 구성하려면 ID 제공자에게 요청을 보내도록 애플리케이션을 구성해야 합니다. 그런 다음 인증이 필요하지 않은 애플리케이션 영역으로 사용자를 경로 재지정합니다. 대부분의 유스 케이스에서 애플리케이션 서버 세션은 인증 및 권한 부여가 사용 가능하도록 SAML 또는 Cloud Directory와 같은 연합 ID 제공자와 협업하여 작동하는 App ID SDK, Ingress 또는 Istio로 설정될 수 있습니다.

다음 HTML 예에서 App ID SDK는 로그아웃을 구성하는 데 사용됩니다. 그러나 다른 옵션을 사용하여 작업 중인 경우 지침으로 이 스니펫을 사용하고 요구사항에 맞게 이를 업데이트할 수 있습니다.

<script>
  var ticker = setInterval(tick, 1000);
  var counter = 5;
  function tick() {
    var timerDiv = document.getElementById("timer");
    if (counter > 0) {
      timerDiv.innerText = "Logged out. Redirecting back in " + (counter--) + " seconds.";
    } else {
      document.location = "./appid_logout";
    }
  } </script>
<iframe height="0" width="0" src="https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0"></iframe>

  1. 클라우드 디렉터리 SSO 기능과 함께 사용되는 모든 리디렉션 URL은 App ID UI의 로그아웃 URL 허용 목록에 추가해야 합니다. ↩︎