헤드리스 ID API: 공개 클라이언트의 헤드리스 무암호 로그인 플로
고객 및 파트너 사용자가 헤드리스 무암호 로그인 플로를 사용하여 플랫폼 외부 앱에 쉽게 로그인할 수 있도록 합니다. 이 플로를 사용하면 사용자가 이메일 주소 또는 전화 번호를 입력하고 일회용 암호(OTP)를 사용하여 ID를 확인하여 로그인합니다. 앱의 프런트 엔드 환경을 제어합니다. 백엔드에서 앱이 Experience Cloud 사이트를 통해 헤드리스 무암호 로그인 API를 호출하여 사용자를 로그인합니다. 다음 단계에서는 정보가 비공개로 유지할 수 없는 단일 페이지 앱 등 공용 클라이언트와 플로가 작동하는 방식을 보여줍니다.
필수 Edition
| 지원 제품: Salesforce Classic(일부 조직에서 사용할 수 없음) 및 Lightning Experience 모두 |
| 지원 제품: Enterprise, Unlimited 및 Developer Edition |
이 플로는 OAuth 2.0 인가 코드 부여 유형을 확장하는 인가 코드 및 자격 증명 플로의 변형입니다. 다른 변형과 마찬가지로 여기에는 인가 코드를 획득하고 이를 액세스 토큰으로 교환하기 위한 Salesforce 끝점에 대한 호출이 포함됩니다. 이 변형에서는 앱이 더 일반적인 헤드리스 로그인 플로에서 수행하는 것처럼 사용자 이름 및 암호 대신 인가 코드에 대한 요청 식별자 및 OTP를 교환합니다. 그런 다음, 액세스 토큰과 코드가 교환됩니다.
이 플로를 설정하기 전에 다음 단계를 완료하십시오.
- 헤드리스 ID 전제 조건 완료
- 다음 옵션 중 하나를 사용하여 플랫폼 외부 앱과 Salesforce를 통합합니다.
- 헤드리스 무암호 로그인을 위한 Experience Cloud 설정을 구성합니다.
다음은 헤드리스 무암호 로그인 플로에 대한 사용 사례의 예입니다. Salesforce에서 고객 정보를 관리하는 여행사에서 근무 중이며 이미 플랫폼 외부 모바일 앱에서 헤드리스 로그인 및 등록을 구현하고 있습니다. 등록 프로세스 동안 사용자의 이메일 주소를 수집합니다. 로그인 프로세스를 더욱 쉽게 수행할 수 있도록 이메일을 확인 메서드로 사용하여 헤드리스 무암호 로그인을 구성합니다. 이제 사용자가 앱을 방문할 때 이메일 주소를 입력하고 OTP를 받을 수 있습니다. 앱에 OTP를 입력하고 Salesforce가 ID를 확인하면 사용자가 로그인되며 여행 내역 등 보호된 Salesforce 데이터에 액세스할 수 있습니다.
경우에 따라 사용자 환경을 더욱 유연하게 활용할 수 있도록 헤드리스 사용자 검색 Apex 처리기를 사용하여 사용자를 검색할 수 있습니다. Salesforce 사용자에게 연결할 수 있는 이메일 주소, 전화 번호 또는 기타 식별자를 기반으로 사용자를 조회하는 처리기를 개발합니다. 예를 들어 사용자에게 이동 확인 번호로 로그인하라는 메시지를 표시합니다. 사용자가 확인 번호를 입력하면 Salesforce에서 연결된 사용자 이름을 찾고 사용자의 이메일 주소로 OTP를 보냅니다. Apex 처리기를 개발하는 방법에 대한 자세한 내용은 Apex 참조 가이드의 Auth.HeadlessUserDiscoveryHandler를 참조하십시오.
모바일 앱 또는 단일 페이지 앱과 같이 앱의 소비자 암호를 안전하게 유지할 수 없는 공개 클라이언트의 경우 플로 구축 시 몇 가지 추가 보안 고려 사항이 있습니다. Experience Cloud 로그인 및 등록 설정을 구성하려면 보안 옵션 이 API에 액세스하려면 인증 필요 또는 이 API에 액세스하기 위한 reCAPTCHA 필요 중 하나 이상을 활성화해야 합니다. 공개 클라이언트의 경우 앱이 헤드리스 무암호 로그인 API에 대한 초기 요청에 reCAPTCHA 토큰을 포함하도록 하려면 이 API에 액세스하기 위한 reCAPTCHA 필요를 항상 활성화하는 것이 좋습니다. 공개 클라이언트에 대해 이 API에 액세스하려면 인증 필요를 활성화하지 않는 것이 좋습니다. 이 설정을 사용하려면 요청 시 내부 통합 사용자에게 발행된 액세스 토큰을 포함해야 하며, 공개 클라이언트는 액세스 토큰 암호를 유지할 수 없습니다.
플로를 보다 안전하게 보호하려면 OAuth 2.0 PKCE(Proof Key for Code Exchange) 확장을 구현하는 것이 좋습니다. 일반적으로 비공개 클라이언트 앱은 소비자 암호를 암호로 사용하여 Salesforce에 안전하게 액세스합니다. 그러나 공개 클라이언트는 비공개 백엔드가 없으므로 소비자 암호를 안전하게 유지할 수 없습니다. PKCE를 사용하면 앱 및 Salesforce에서만 확인할 수 있는 매개 변수를 사용하여 이 격차를 해소할 수 있습니다. 이러한 매개 변수를 사용하여 플로를 시작하는 클라이언트가 플로를 완료하는 클라이언트와 같은 클라이언트인지 확인할 수 있습니다.
플로 도중 최종 사용자에게 전송되는 일회용 암호(OTP) 이메일에 대한 이메일 템플릿 옵션을 확장하려면 이메일 템플릿 허용 목록에 수신을 동의하고 사용자 정의 템플릿으로 허용 목록을 만듭니다. 헤드리스 플로에 여러 이메일 템플릿 사용을 참조하십시오.
다음은 공개 클라이언트에 대한 헤드리스 무암호 로그인 플로의 개요입니다.
- 최종 사용자가 앱을 열고 앱 내에 기본적으로 표시되는 로그인 형식을 봅니다. 최종 사용자는 로그인 형식에 요청된 대로 이메일 주소 또는 전화 번호를 입력합니다(1).
- 헤드리스 사용자 검색 처리기를 사용하지 않는 경우 앱에서 사용자의 전화 번호 또는 이메일 주소와 연결된 사용자 이름을 찾습니다(2).
- 앱이 헤드리스 무암호 로그인 API(Experience Cloud 사이트의
services/auth/headless/init/passwordless/login끝점)에 헤드리스 POST 요청을 제출합니다(3). - (선택 사항) 헤드리스 사용자 검색 처리기를 사용하는 경우 처리기는
login_hint매개 변수에서 전달된 데이터와 연결된 사용자 이름을 찾고 해당 사용자와 연결된 이메일 주소 또는 전화 번호가 검증되었는지 확인합니다. - Salesforce가 앱에 성공 메시지를 반환합니다. 또한 플로에서 나중에 사용되는 요청 식별자를 보냅니다(4a).
- 확인 방법에 따라 Salesforce가 사용자에게 OTP(OTP)가 포함된 이메일 또는 SMS 텍스트 메시지를 보냅니다(4b).
- 앱에 OTP 확인 양식이 기본적으로 표시됩니다(5).
- 사용자가 OTP를 수신하고 앱에 입력합니다(6).
- PKCE를 사용하는 경우(적극 권장) 앱에서 PKCE 매개 변수를 생성합니다(7).
- 앱이 Salesforce 인가 끝점(
services/oauth2/authorize)에 대한 POST 또는 GET 요청을 사용하여 인가 코드 및 자격 증명 플로를 시작합니다. 요청에는 요청 ID 및 OTP와 앱을 식별하고 요청 유형을 지정하는 기타 매개 변수가 포함되어 있습니다(8). - Salesforce가 요청 ID 및 OTP를 확인한 후 인가 코드가 포함된 미리 구성된 URL로 302 리디렉션을 반환합니다. 브라우저에서 플로가 실행 중인 경우 브라우저 내에서 302 리디렉션이 처리되고 응답이 콜백 끝점에 헤드리스 상태로 전달됩니다(9).
- 콜백 끝점은 인가 코드를 추출하고 앱에 반환합니다(10).
- 앱이 인가 코드를 수신하고 POST 요청의 코드 및 기타 매개 변수를 Salesforce 토큰 끝점(
services/oauth2/token)으로 전송하여 코드 교환을 시작합니다(11). - Salesforce가 토큰 요청을 확인하고 액세스 토큰 및 상태를 반환합니다(12).
- 앱이 액세스 토큰 응답을 처리하고 사용자의 세션을 만듭니다(13).
- 이제 사용자가 로그인하여 앱에서 Salesforce 데이터에 액세스해야 하는 작업(예: 버튼을 클릭하여 주문 내역 확인)을 수행합니다(14).
- 앱에서 보호된 Salesforce API에 인증 요청을 보냅니다(15).
- 이제 사용자가 플랫폼 외부 앱에서 Salesforce 데이터에 액세스할 수 있습니다(16).
10단계에 언급된 대로 이 플로는 302 리디렉션을 처리하고 앱에 인가 코드 및 기타 매개 변수를 반환할 수 있는 콜백 끝점이 필요합니다. 브라우저에서 코드 교환을 완료하는 구현의 경우 Salesforce /services/oauth2/echo 끝점을 사용할 수 있습니다. 이 끝점은 302 리디렉션을 자동으로 구문 분석하고 매개 변수를 추출한 후 앱에 JSON 형식으로 반환합니다. 이 플로의 코드 예제에서는 Echo 끝점을 사용합니다.
최종 사용자가 로그인을 위해 이메일 주소 또는 전화 번호 입력
최종 사용자가 앱을 방문하면 플로가 시작됩니다. 앱에 사용자의 이메일 주소 또는 전화 번호만 요청하는 로그인 양식이 기본적으로 표시됩니다. 또는 주문 번호와 같은 다른 식별자를 기반으로 사용자를 조회하는 헤드리스 사용자 검색 처리기를 사용하는 경우 앱에서 사용자에게 식별자를 묻는 로그인 양식을 표시할 수 있습니다. 최종 사용자가 정보를 입력하고 버튼을 클릭하여 로그인합니다.
앱에서 사용자 이름 찾기
헤드리스 사용자 검색 처리기를 사용하지 않는 경우 앱에서 사용자의 이메일 주소 또는 전화 번호를 검색하고 연결된 사용자 이름을 찾습니다.
헤드리스 사용자 검색 처리기를 사용하는 경우 앱에서 이 단계를 건너 ⁇ 니다. 처리기는 초기 요청을 제출한 후 사용자를 조회합니다.
앱이 헤드리스 무암호 로그인 API에 요청을 보냅니다.
브라우저에서 앱이 Experience Cloud 사이트의 헤드리스 무암호 로그인 끝점(services/auth/headless/init/passwordless/login)에 헤드리스 POST 요청을 보냅니다.
요청 본문에 다음 매개 변수를 포함하십시오.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
verificationmethod
|
예. | 사용자 ID를 확인하는 데 사용할 메서드입니다. email 또는 sms를 사용할 수 있습니다. |
username
|
헤드리스 사용자 검색 처리기를 사용하지 않는 경우 필요합니다. | 사용자가 제출한 이메일 주소 또는 전화 번호와 연결된 사용자 이름입니다. |
recaptcha
|
다음 조건이 적용되는 경우 필수입니다.
|
사용자가 reCAPTCHA 확인을 완료할 때 Google reCAPTCHA API에서 발행되는 암호화된 토큰입니다. |
recaptchaevent
|
다음 조건이 적용되는 경우 필수입니다.
|
다음 하위 매개 변수를 포함하는 JSON 개체입니다.
자세한 내용은 Google reCAPTCHA 문서를 참조하십시오. |
emailtemplate
|
이메일 템플릿 허용 목록이 활성화된 경우 여러 사용자 정의 이메일 템플릿을 지정해야 합니다. 이메일 템플릿 허용 목록을 활성화하지 않은 경우 이 매개 변수를 포함할 수 없습니다. 이 매개 변수를 포함하지 않을 경우 Salesforce는 허용 목록이 활성화되어 있는지 여부에 상관없이 Experience Cloud 설정에 구성된 기본 이메일 템플릿을 사용합니다. 템플릿이 구성되지 않은 경우 Salesforce는 기본 OTP 이메일 템플릿을 사용합니다. 기본 템플릿의 이메일 템플릿 언어는 Salesforce의 사용자 언어 설정에 의해 제어됩니다. |
사용자 정의 이메일 템플릿 개발자 이름입니다. 이 매개 변수에는 허용 목록의 이메일 템플릿만 포함할 수 있습니다. 사용자 정의 이메일 템플릿의 언어를 제어하려면 원하는 언어로 템플릿을 만듭니다. |
login_hint
|
헤드리스 사용자 검색 Apex 처리기를 사용하는 경우 필요합니다. | Apex 처리기가 사용자의 Salesforce 계정을 찾는 데 사용할 수 있는 식별자입니다. 예를 들어, 앱에서 사용자의 주문 번호를 수집하고 이를 login_hint 매개 변수에 전달합니다. login_hint 값을 Apex 처리기에 직접 전송합니다. |
다음은 헤드리스 무암호 로그인 API에 대한 요청의 예입니다. 이 요청은 헤드리스 사용자 검색 처리기를 사용하지 않는 구현용입니다.
POST /services/auth/headless/init/passwordless/login? HTTP 1.1
Host: MyExperienceCloudSite.my.site.com
{
"verificationmethod": "email",
"username": "janice.edwards@example.com",
"recaptcha": "***********",
"emailtemplate": "unfiled$public/SalesNewCustomerEmail"
}다음은 헤드리스 사용자 검색 처리기를 사용하는 경우 요청의 예입니다.
POST /services/auth/headless/init/passwordless/login? HTTP 1.1
Host: MyExperienceCloudSite.my.site.com
{
"verificationmethod": "email",
"login_hint": "<user identifier such as email address, phone number, order number>",
"recaptcha": "***********",
"emailtemplate": "unfiled$public/SalesNewCustomerEmail"
}(옵션) 헤드리스 사용자 검색 처리기에서 사용자 찾기
헤드리스 사용자 검색 처리기를 사용하는 경우 처리기는 login_hint 매개 변수를 가져와 연결된 사용자를 찾습니다. 처리기가 사용자의 이메일 주소 또는 전화 번호가 확인되었는지 확인합니다.
예제 처리 방법은 Auth.HeadlessUserDiscoveryHandler를 참조하십시오.
Salesforce에서 앱에 요청 식별자 반환
요청이 성공하면 Salesforce에서 요청에 대한 identifier가 포함된 성공 메시지를 반환합니다. 이는 이후 플로에서 액세스 토큰을 교환할 때 중요합니다. 성공 메시지 예제는 다음과 같습니다.
{
"status”: "success",
"email": "jedwards@example.com",
"identifier": “0RXXXXXXXX”
}Salesforce에서 사용자에게 OTP 전송
Salesforce가 앱에 요청 식별자를 보낸 직후 OTP를 사용하여 사용자에게 이메일 또는 SMS 텍스트 메시지를 보냅니다.
앱의 확인 양식 표시
앱에 사용자가 OTP를 입력할 수 있는 확인 양식이 기본적으로 표시됩니다.
최종 사용자가 OTP 입력
최종 사용자가 이메일 또는 텍스트 메시지를 통해 OTP를 수신하고 앱의 확인 양식에 입력합니다.
앱에서 PKCE 매개 변수를 생성합니다.
PKCE 확장을 사용하는 경우(적극 권장) 앱이 code_verifier 및 code_challenge 매개 변수를 생성합니다.
RFC 7636에 정의된 PKCE 사양에는 인가 요청 시 보낼 수 있는 선택 사항인 code_challenge_method 매개 변수도 포함되어 있습니다. Salesforce에서는 이 매개 변수에 전송한 값을 무시하며 기본값은 SHA256입니다.
앱이 인가 끝점에 요청 전송
사용자가 OTP를 입력하여 ID를 확인하는 즉시 앱이 인가 코드에 대한 요청 ID와 OTP를 교환하는 인가 끝점에 대한 요청을 사용하여 인가 코드 및 자격 증명 플로를 시작합니다.
인가 요청에 다음 머리글을 포함하십시오.
| 머리글 | 필수? | 설명 |
|---|---|---|
Auth-Request-Type
|
예. | Salesforce에 보낼 요청 유형을 지정합니다. 헤드리스 무암호 로그인의 경우 이 값은 passwordless-login으로 설정해야 합니다. |
Auth-Verification-Type
|
예. | 사용자의 ID 확인을 위해 사용되는 방법입니다. Salesforce는 확인 메서드에 대해 email 및 sms라는 두 가지 값을 지원합니다. |
Authorization
|
예. | Salesforce가 사용자의 저장된 정보에 연결할 수 있도록 무암호 로그인 요청을 식별하는 기본 머리글입니다. Salesforce에서 제공한 요청 식별자( |
Uvid-Hint
|
아니요. 앱에서 게스트 사용자 플로를 구현하는 경우 옵션으로 이 머리글을 사용하여 게스트 사용자의 ID에 연결된 고유한 방문자 ID(UVID)가 포함된 JSON 웹 토큰(JWT) 기반 액세스 토큰을 전달할 수 있습니다. UVID를 명명된 사용자 플로에 전달하여 사용자의 쿠키 기본 설정과 같은 게스트 사용자 세션의 컨텍스트 정보를 명명된 사용자 세션으로 전달할 수 있습니다. 머리글에 UVID가 있는 JWT 기반 토큰을 전달하는 대신 요청 본문에 일반 UVID 값을 전달할 수도 있습니다. |
앱에서 완전히 생성하고 관리하는 버전 4 전체 고유 식별자(UUID)인 UVID 값을 포함하는 JWT 기반 액세스 토큰입니다. UVID가 포함된 액세스 토큰을 가져오려면 연결된 앱이 JWT 기반 액세스 토큰을 발행하고 앱에서 헤드리스 게스트 플로를 구현하도록 활성화해야 합니다. |
요청 본문에 다음 매개 변수를 포함하십시오.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
response_type
|
예. | 앱이 요청하는 OAuth 2.0 허용 유형입니다. 이 플로는 인가 코드 및 자격 증명 플로의 변형이므로 이 값은 code_credentials이어야 합니다. |
client_id
|
예. | 외부 클라이언트 앱 또는 연결된 앱의 소비자 키입니다. |
redirect_uri
|
예. | 인증 성공 후 사용자가 리디렉션되는 URL입니다. 이 플로의 경우 Echo 끝점인 |
code_challenge
|
PKCE를 사용하는 경우로 한정됩니다. PKCE는 특히 공개 클라이언트에 적극 권장됩니다. | 토큰 요청에서 인가 요청에 인가 요청에 |
uvid_hint
|
아니요. 앱에 게스트 사용자 플로를 구현하는 경우, 이 매개 변수를 선택적으로 사용하여 게스트 사용자의 ID와 연결된 UVID 값을 전달하고, 게스트 사용자 세션에서 명명된 사용자 세션으로 컨텍스트 정보를 전달할 수 있습니다. 요청 본문에 UVID를 전달하는 대신에 |
앱에서 완전히 생성 및 관리되는 버전 4 UUID인 일반 UVID 값입니다. UVID를 가져오려면 외부 클라이언트 앱 또는 연결된 앱을 활성화하여 JWT 기반 액세스 토큰을 발행하고 앱에 헤드리스 게스트 플로를 구현해야 합니다. |
인가 끝점에 대한 요청 예제는 다음과 같습니다. 이 예에는 PKCE가 포함되어 있습니다.
POST /services/oauth2/authorize? HTTP 1.1
Host: MyExperienceCloudSite.my.site.com
Auth-Request-Type: passwordless-login
Auth-Verification-Type: email
Authorization: Basic <base64-encoded identifier:OTP
response_type=code_credentials&
client_id=***********&
redirect_uri=https://www.MyExperienceCloudSite.my.site.com/services/oauth2/echo&
code_challenge=********
Salesforce에서 요청을 확인하고 302 리디렉션 반환
요청이 인가 끝점에 도달하면 Salesforce가 요청 식별자 및 OTP를 확인합니다. 그 후 Salesforce가 HTTP 302 리디렉션을 인가 코드가 포함된 미리 구성된 URL로 반환합니다. 브라우저에서 플로가 발생하는 경우 브라우저에서 302 리디렉션이 처리되고 Salesforce에서 콜백 끝점인 리디렉션 URL에 리디렉션 응답을 자동으로 전송합니다. 다음은 미리 구성된 URL의 예입니다.
https://www.MyDomainName.my.site.com/services/apexrest/code/exchange?code=aPrxC1*******
&sfdc_community_url=https%3A%2F%2FMyDomainName.my.site.com&sfdc_community_id=0DBxxxxxxxxxxxx콜백 끝점에서 앱에 인가 코드 보내기
콜백 끝점은 인가 코드를 추출하고 앱에 반환합니다. 다음 코드 예에서 리디렉션 URL은 Experience Cloud 사이트의 /services/oauth2/echo 콜백 끝점을 가리킵니다. 이 끝점은 302 리디렉션을 자동으로 구문 분석하고 인가 코드 및 기타 매개 변수를 추출한 후 앱에 JSON 형식으로 반환합니다.
앱에서 토큰 교환 시작
앱에서 코드 응답을 수신합니다. 액세스 토큰을 가져오기 위해 앱이 /services/oauth2/token 끝점에 대한 헤드리스 POST 요청과 코드 교환을 시작합니다.
이 요청에는 머리글이 없습니다. 요청 본문에 다음 매개 변수를 포함하십시오.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
code
|
예. | 인가 서버는 단기간 사용할 수 있는 토큰인 인가 코드를 만들고 인증 후 클라이언트에게 전달하며, 클라이언트는 액세스 토큰 또는 필요한 경우 새로 고침 토큰을 얻기 위해 권한 부여 서버에 권한 부여 코드를 전송합니다. |
client_id
|
예. | 외부 클라이언트 앱 또는 연결된 앱의 소비자 키입니다. |
redirect_uri
|
예. | 인증 성공 후 사용자가 리디렉션되는 URL. 리디렉션 URI는 외부 클라이언트 앱 또는 연결된 앱의 콜백 URL 필드에 있는 값과 일치해야 합니다. 그렇지 않은 경우 승인이 실패합니다. 이 값은 URL로 인코딩되어야 합니다. 이 플로의 경우 Echo 끝점인 |
grant_type
|
예. | 앱이 안전한 방문자임을 입증하기 위해 제공할 수 있는 확인 유형입니다. 인가 코드 및 자격 증명 플로의 경우 값이 authorization_code여야 합니다. |
code_verifier
|
PKCE를 사용하는 경우로 한정됩니다. | code 값을 추측하기 어렵게 만들기 위해 난수 데이터를 불확실성이 높은 128바이트로 지정합니다. 이 매개 변수를 설정하여 인가 코드 가로채기 공격을 방지합니다. 값은 https://datatracker.ietf.org/doc/html/rfc4648#section-5에 정의된 대로 base64url로 인코딩되어야 합니다. 토큰 요청에 토큰 요청에 |
토큰 요청 예제는 다음과 같습니다. 이 예에서는 PKCE를 사용합니다.
POST services/oauth2/token? HTTP 1.1
Host: MyExperienceCloudSite.my.site.com
code=********&
client_id=**********&
redirect_uri=https://MyExperienceCloudSite.my.site.com/services/oauth2/echo&
grant_type=authorization_code&
code_verifier=*******Salesforce에서 액세스 토큰 부여
앱의 자격 증명 유효성을 검사한 후 Salesforce는 브라우저에 액세스 토큰을 반환합니다. 다음은 JSON 형식의 액세스 토큰 응답 예제입니다.
{
"access_token":"*******************",
"sfdc_community_url":"https://MyDomainName.my.site.com",
"sfdc_community_id":"0DBxxxxxxxxxxxx",
"signature":"ts6wm/svX3jXlCGR4uu+SbA04M6qhD1SAgVTEwZ59P4=",
"scope":"openid api",
"id_token":"XXXXXX",
"instance_url":"https://yourInstance.salesforce.com",
"id":"https://yourInstance.salesforce.com/id/00Dxxxxxxxxxxxx/005xxxxxxxxxxxx",
"token_type":"Bearer",
"issued_at":"1667600739962"
}액세스 토큰 응답에는 다음의 매개 변수가 포함됩니다.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
access_token
|
예. | 클라이언트 응용 프로그램을 대신해 보호된 자원에 대한 액세스를 요청하기 위해 외부 클라이언트 앱 또는 연결된 앱이 사용하는 OAuth 토큰입니다. 범위 형태의 추가 권한이 액세스 토큰과 함께 제공될 수 있습니다. |
id
|
예. | 사용자를 식별하고 사용자에 대한 추가 정보를 쿼리하는 데 사용할 수 있는 ID URL입니다. ID URL을 참조하십시오. |
id_token
|
아니요. | 사용자의 고유한 ID 및 토큰이 발급된 시기가 표시된 타임스탬프를 비롯해 인증받은 사용자 특성을 포함하는 서명된 데이터 구조이며, 앱 요청도 식별합니다. OpenID Connect 사양을 참조하십시오. |
instance_url
|
예. | 사용자 조직의 인스턴스를 표시하는 URL. 예를 들면, https://yourInstance.salesforce.com/입니다. |
issued_at
|
예. | 서명 작성 시 타임스탬프이며, 1970-01-01T0:0:0Z UTC부터 밀리초로 표시됩니다. |
refresh_token
|
아니요. | 웹 서버, 사용자-에이전트 또는 하이브리드 앱 토큰 플로에서 얻은 토큰입니다. 이 값은 암호입니다. 안전하게 보호하기 위해 적절한 조치를 취하십시오. 이 매개 변수는 외부 클라이언트 앱 또는 연결된 앱이 refresh_token 범위로 설정되어 있는 경우에만 반환됩니다. |
signature
|
예. | client_secret으로 서명된 Base64 인코딩된 HMAC-SHA256 서명입니다. 서명에는 연결된 ID 및 issued_at 값이 포함될 수 있으며 서버에서 보낸 이후로 ID URL이 변경되지 않았는지 확인하는 데 사용할 수 있습니다. |
sfdc_community_url
|
예. | Experience Cloud 사이트의 URL입니다. |
sfdc_community_id
|
예. | 사용자의 Experience Cloud 사이트 ID입니다. |
state
|
아니요. | 클라이언트가 요청한 상태. 원본 쿼리 문자열에 state 매개 변수가 들어 있지 않은 경우에만 이 값이 포함됩니다. |
token_type
|
예. | 액세스 토큰을 포함하는 모든 응답에 사용되는 Bearer 토큰 유형입니다. |
앱에서 사용자 세션 생성
브라우저에서 토큰 응답의 정보를 저장하고 사용자 세션을 만듭니다. 앱에서 Salesforce 사용자 정보 끝점을 호출하여 로그인에 성공했는지 확인합니다.
사용자가 로그인되고 앱에서 작업 수행
이제 최종 사용자가 로그인되며, 앱에서 Salesforce 데이터에 액세스해야 하는 작업을 수행합니다. 예를 들어 Salesforce에 저장되는 주문 내역에 액세스하기 위해 버튼을 클릭합니다.
앱이 Salesforce 끝점에 인증된 호출 수행
사용자의 Salesforce 데이터에 액세스하기 위해 앱은 액세스 토큰을 사용하여 Salesforce API와 같은 보호된 Salesforce 끝점에 인증된 호출을 수행합니다.
사용자의 Salesforce 데이터 액세스 허용
이제 사용자가 앱에서 보호된 Salesforce 데이터에 액세스할 수 있습니다. 예를 들어 사용자는 자신의 주문 내역을 볼 수 있습니다. 사용자 관점에서 보면 로그인에서부터 자신의 데이터에 액세스에 이르기까지의 전체 프로세스가 앱을 벗어날 필요도 없이 이루어졌습니다.

