서명된 삽입은 별도의 Looker 로그인을 요구하지 않고도 사용자에게 비공개 삽입 Look, 시각화, Explore, 대시보드 또는 LookML 대시보드를 제시하는 방법입니다. 대신 사용자가 자체 애플리케이션을 통해 인증됩니다.
서명된 삽입은 iframe에서 사용할 특수한 Looker URL을 만들어 작동합니다. 이 URL에는 공유하려는 정보, 시스템의 사용자 ID, 해당 사용자에게 부여할 권한이 포함됩니다. 그런 다음 Looker가 제공하는 보안 비밀 키로 URL에 서명합니다.
공개 삽입은 Look의 공개 공유, 가져오기, 삽입 문서 페이지의 iframe
태그를 사용한 공개 삽입 섹션을 참조하세요.
Looker 인스턴스에서 서명된 삽입을 사용하려면 Looker 관리자가 Looker 관리자 패널에서 서명된 삽입을 사용 설정하고 삽입 보안 비밀 키를 만들어야 합니다. 자세한 내용은 삽입 시작하기 — 서명된 삽입 사용 설정 문서를 참조하세요.
서명된 삽입을 위한 적절한 호스팅
Safari나 광고 또는 추적 쿠키를 차단하는 확장 프로그램이 설치된 브라우저 같은 일부 브라우저에서는 기본적으로 서드 파티 쿠키를 차단하는 쿠키 정책이 설정됩니다. 쿠키 없는 삽입 기능을 사용 설정하면 서드 파티 쿠키를 차단하는 브라우저가 여러 도메인에서 삽입된 iframe의 사용자를 인증할 수 있습니다. 쿠키 없는 삽입 인증에는 서버 측 구성이 필요합니다. 설정 예시는 쿠키 없는 삽입 문서 페이지를 참조하세요.
쿠키 없는 삽입 기능이 사용 설정되지 않은 경우 Looker에서는 사용자 인증을 위해 쿠키를 사용합니다. 이 경우 (사용자가 브라우저의 쿠키 개인 정보 보호 설정을 수정하지 않는 한) 서드 파티 쿠키를 차단하는 브라우저에서 도메인의 삽입된 iframe을 인증할 수 없습니다. 예를 들어 https://mycompany.com
에 정보를 삽입하려면 Looker가 https://analytics.mycompany.com
과 같이 동일한 도메인을 공유해야 합니다. 여기서 Looker가 인스턴스를 호스팅하는 경우 커스텀 도메인을 사용 설정하는 데 필요한 DNS 구성을 설정하려면 Looker 지원팀에 문의하세요. 그러면 Looker가 삽입 애플리케이션과 동일한 도메인을 공유하고 모든 브라우저에서 기본적으로 허용되는 퍼스트 파티 쿠키를 활용할 수 있습니다.
고객 호스팅 Looker 인스턴스가 있는 경우 서명된 삽입을 사용할 애플리케이션이 Looker 인스턴스와 동일한 도메인을 사용하는지 확인합니다.
폐쇄형 시스템을 사용한 클라이언트 공개 상태 제어
Looker 사용자가 서명한 삽입 구성에서 서로 다른 회사 또는 그룹의 클라이언트를 서로 알고 있지만 다른 고객에게는 데이터를 제공하는 것이 일반적입니다. 이러한 시나리오에서는 고객의 개인 정보를 보호하기 위해 Looker를 멀티테넌트 설치라고도 하는 폐쇄형 시스템으로 구성하는 것이 좋습니다. 폐쇄형 시스템에서는 여러 그룹의 사용자가 서로 알 수 없도록 콘텐츠가 격리됩니다. 이러한 이유로 외부 사용자에게 인스턴스 액세스 권한을 부여하기 전에 폐쇄형 시스템 옵션을 사용 설정하는 것이 좋습니다.
자세한 내용은 액세스 수준 체계 설계 및 구성과 삽입 분석을 위한 보안 권장사항 문서 페이지를 참조하세요.
서명된 삽입 URL 생성
서명된 삽입 URL을 생성하는 방법에는 여러 가지가 있습니다. 다음 방법 중 하나를 사용할 수 있습니다.
대시보드의 점 3개로 된 대시보드 메뉴나 Look 또는 Explore의 Explore 작업 톱니바퀴 메뉴에서 삽입 URL 가져오기 옵션을 사용하여 서명된 삽입 URL을 생성할 수 있습니다.
이 문서의 뒷부분에 설명된 대로 Looker API 서명된 삽입 URL 엔드포인트를 사용합니다.
Looker 삽입 SDK를 사용합니다.
서명된 삽입 URL을 코딩합니다. 올바른 URL을 작성하려면 코드를 작성해야 합니다. 그래야 보안 비밀 키로 URL을 올바르게 인코딩하고 기타 보안 관련 항목을 생성할 수 있습니다. Looker 삽입 예 GitHub 저장소에서 여러 샘플 스크립트를 찾을 수 있습니다. 다음 섹션에서는 이러한 스크립트에 제공해야 하는 정보와 스크립트를 사용하지 않고 서명된 삽입 URL을 빌드하는 방법을 설명합니다.
서명된 삽입 URL 수동 코딩
서명된 삽입 URL을 코딩하려면 먼저 필요한 Looker 정보를 수집한 다음 서명된 삽입 URL을 만듭니다.
필요한 Looker 정보 수집
URL을 작성할 때는 먼저 포함해야 할 모든 정보를 결정해야 합니다. 필요한 사항은 다음과 같습니다.
삽입 URL
삽입하려는 Look, Explore, 쿼리 시각화 또는 대시보드의 URL을 가져옵니다. 그리고 다음과 같이 도메인을 삭제하고 경로 앞에 /embed
을 배치합니다.
항목 | 일반 URL 패턴 | 삽입 URL |
---|---|---|
Look | https://instance_name.looker.com/looks/4 |
/embed/looks/4 |
Explore | https://instance_name.looker.com/explore/my_model/my_explore |
/embed/explore/my_model/my_explore |
쿼리 시각화 | https://instance_name.looker.com/explore/my_model/my_explore?qid=1234567890abcdefghij12 Explore URL의 qid= 매개변수 뒤에 오는 22자의 영숫자 문자가 Query.client_id 를 구성합니다. Query.client_id 값은 쿼리 및 시각화 설정을 나타내는 고유 문자열입니다.쿼리 시각화를 삽입하려면 쿼리 시각화 Query.client_id 값을 검색하고 Query.client_id 를 삽입 URL에 복사합니다.Looker Explore UI를 사용하여 지원되는 시각화로 쿼리를 빌드하고 qid= 매개변수에서 Query.client_id 값을 복사하거나 Looker API로 Query.client_id 를 검색할 수 있습니다(예: Get Query 메서드 사용). |
/embed/query-visualization/Query.client_id |
사용자 정의 대시보드 | https://instance_name.looker.com/dashboards/1 대시보드 필터 값을 포함하거나, 필터 값을 숨기는 경우 대시보드 URL에 hide_filter 매개변수를 추가합니다. |
|
기존 사용자 정의 대시보드 | https://instance_name.looker.com/dashboards-legacy/1 |
/embed/dashboards-legacy/1 |
LookML 대시보드 | https://instance_name.looker.com/dashboards/my_model::my_dashboard |
/embed/dashboards/my_model::my_dashboard |
기존 LookML 대시보드 | https://instance_name.looker.com/dashboards-legacy/my_model::my_dashboard |
/embed/dashboards-legacy/my_model::my_dashboard |
삽입된 콘텐츠는 항상 콘텐츠의 프로덕션 버전을 반영합니다. 개발 모드에서 콘텐츠에 영향을 미치지만 프로덕션에 배포되지 않은 변경사항은 삽입에 표시되지 않습니다.
권한
권한 세트는 사용자 또는 그룹이 수행할 수 있는 작업을 정의합니다. 권한은 다음 두 가지 방법 중 하나로 적용할 수 있습니다.
- 모델별: 이 유형의 권한은 동일한 역할에 속하는 모델 세트에만 적용됩니다.
- 인스턴스 전체: 이 권한 유형은 Looker 인스턴스 전체에 적용됩니다. 인스턴스 전체 권한을 가진 삽입 사용자는 전체 Looker 인스턴스에서 특정 기능을 수행할 수 있지만 역할의 모델 세트에 포함되지 않은 모델을 기반으로 한 콘텐츠에는 액세스할 수 없습니다.
사용자에게 부여할 권한을 결정합니다. 다음 목록에는 서명된 삽입에 사용할 수 있는 모든 권한이 나와 있습니다. 다음 목록에 없는 권한은 서명된 삽입에 지원되지 않습니다.
권한 | 영향을 주는 권한 | 유형 | 정의 |
---|---|---|---|
access_data |
없음 | 모델별 | 사용자가 데이터에 액세스할 수 있습니다(Look, 대시보드, Explore 조회 시 필요). |
see_lookml_dashboards |
access_data |
모델별 | 사용자가 LookML 대시보드를 볼 수 있습니다. |
see_looks |
access_data |
모델별 | 사용자가 Look을 볼 수 있습니다. |
see_user_dashboards |
see_looks |
모델별 | 사용자가 사용자 정의 대시보드를 보고 삽입에서 폴더를 탐색할 수 있습니다. |
explore |
see_looks |
모델별 | 사용자가 Explore 페이지를 볼 수 있습니다. |
create_table_calculations |
explore |
인스턴스 전체 | Explore에서 테이블 계산을 만들어야 합니다. |
create_custom_fields |
explore |
인스턴스 전체 | 22.4 추가됨 Explore에서 커스텀 필드를 만들어야 합니다. |
can_create_forecast |
explore |
인스턴스 전체 | 22.12 추가됨 사용자가 시각화에서 예측을 만들거나 수정할 수 있습니다. |
save_content |
see_looks |
인스턴스 전체 | 사용자가 Look과 대시보드를 변경하고 저장할 수 있습니다. |
send_outgoing_webhook |
see_looks |
모델별 | 사용자가 임의 웹훅에의 Looker 콘텐츠 전송을 예약할 수 있습니다. |
send_to_s3 |
see_looks |
모델별 | 사용자가 Amazon S3 버킷에의 Looker 콘텐츠 전송을 예약할 수 있습니다. |
send_to_sftp |
see_looks |
모델별 | 사용자가 SFTP 서버에의 Looker 콘텐츠 전송을 예약할 수 있습니다. |
schedule_look_emails |
see_looks |
모델별 | 사용자가 자신의 이메일('email이라는 사용자 속성을 사용해 설정한 경우) 또는 이메일 도메인 허용 목록에 의해 설정된 제한사항을 따르는 이메일 주소에의 Looker 콘텐츠 전송을 예약할 수 있습니다. create_alerts 권한이 있는 사용자가 이메일 도메인 허용 목록에 의해 설정된 제한사항을 따르는 이메일 주소로 알림을 보낼 수 있습니다. |
schedule_external_look_emails |
schedule_look_emails |
모델별 | 사용자가 모든 이메일 도메인에의 Looker 콘텐츠 전송을 예약할 수 있습니다. create_alerts 권한이 있는 사용자가 모든 이메일 도메인으로 알림을 보내도록 허용합니다. |
send_to_integration |
see_looks |
모델별 | 사용자가 Looker 작업 허브를 통해 Looker와 통합된 서드 파티 서비스에 Looker 콘텐츠를 전송할 수 있습니다. 이 권한은 데이터 작업과 관련이 없습니다. |
create_alerts |
see_looks |
인스턴스 전체 | 사용자가 대시보드 타일에 대한 알림을 만들어 지정된 조건을 충족하거나 초과하면 알림을 수신할 수 있습니다. 사용자가 자신의 알림 및 다른 사용자의 공개 알림을 수정, 복제, 삭제할 수 있습니다. 사용자의 Slack 작업공간이 Looker 인스턴스에 연결되어 있지 않으면 사용자가 Slack에 알림을 전송하는 알림을 만들 수 없습니다. |
download_with_limit |
see_looks |
인스턴스 전체 | 사용자는 한도가 있는 쿼리 결과를 다운로드할 수 있습니다. |
download_without_limit |
see_looks |
인스턴스 전체 | 사용자가 한도 없이 쿼리 결과를 다운로드할 수 있습니다. |
see_sql |
see_looks |
모델별 | 사용자가 쿼리를 위한 SQL과 쿼리 실행으로 인한 모든 SQL 오류를 볼 수 있습니다. |
clear_cache_refresh |
access_data |
모델별 | 21.14 추가됨 사용자가 캐시를 삭제하고 삽입된 대시보드, 기존 대시보드, 대시보드 타일, Look, Explore를 새로고침할 수 있습니다. |
see_drill_overlay |
access_data |
모델별 | 사용자가 전체 Explore 페이지로 이동할 필요 없이 드릴할 수 있습니다. |
embed_browse_spaces |
없음 | 인스턴스 전체 | 사용자가 삽입에서 폴더를 탐색할 수 있도록 콘텐츠 브라우저를 사용 설정합니다. embed_browse_spaces 권한이 부여된 모든 삽입 사용자에게는 개인 삽입 폴더 및 조직의 공유 폴더(존재하는 경우)에 대한 액세스 권한이 부여됩니다. embed_browse_spaces 권한을 가진 사용자에게 콘텐츠를 저장할 위치를 선택할 때 폴더를 탐색할 수 있도록 save_content 권한을 부여하는 것이 좋습니다.폴더의 콘텐츠를 보려면 사용자에게 see_looks , see_user_dashboards , see_lookml_dashboards 권한도 있어야 합니다. |
embed_save_shared_space |
없음 | 인스턴스 전체 |
21.4 추가됨
save_content 권한도 보유한 사용자가 저장 대화상자에서 조직의 공유 폴더(존재하는 경우)로 이동할 수 있습니다. save_content 권한은 있지만 embed_save_shared_space 권한이 없는 사용자는 개인 삽입 폴더에만 콘텐츠를 저장할 수 있습니다.embed_save_shared_space 권한이 콘텐츠 액세스 권한을 재정의하지는 않습니다. 예를 들어 사용자가 공유 폴더에 저장할 수 있으려면 공유 폴더에 대한 액세스 관리, 수정 액세스 권한도 필요합니다. 또한 예를 들어 삽입된 대시보드에서 여기에서 Explore 옵션을 사용하는 등 공유 폴더로 이동하는 다른 방법이 있는 경우, embed_save_shared_space 권한이 없더라도 save_content 권한과 공유 폴더에 대한 액세스 관리, 수정 액세스 권한이 있는 사용자가 이 폴더에 콘텐츠를 저장하지 못하게 막을 수 없습니다. |
모델 액세스
사용자가 액세스해야 하는 LookML 모델을 결정합니다. 모델 이름 목록을 준비하면 됩니다.
사용자 속성
사용자에게 있어야 하는 사용자 속성을 결정합니다(존재하는 경우). Looker의 사용자 속성 이름과 해당 속성에 대해 사용자가 가져야 할 값이 필요합니다.
그룹
사용자가 속해야 하는 그룹을 결정합니다(존재하는 경우). 그룹 이름이 아닌 그룹 ID가 필요합니다. Looker 그룹에 서명된 삽입 사용자를 추가하면 Looker 폴더에 대한 사용자의 액세스 권한을 관리할 수 있습니다. 서명된 삽입 사용자는 Looker 그룹의 구성원과 공유된 모든 폴더에 액세스할 수 있습니다.
external_group_id
매개변수를 사용하여 일반 Looker 그룹 외부에 있는 그룹을 만들 수도 있습니다. 이 경우 동일한 external_group_id
를 가진 서명된 삽입 사용자가 외부 그룹에 고유한 'Group'이라는 공유 폴더에 액세스할 수 있습니다.
삽입된 역할
permissions
및 models
매개변수는 삽입 사용자의 역할을 만듭니다. 이 역할은 Looker 관리 섹션의 사용자 페이지에 '삽입된 역할'로 표시됩니다. permissions
, models
, group_ids
매개변수가 모두 삽입 URL에 지정된 경우 삽입된 역할이 group_ids
매개변수에 나열된 그룹에 이미 할당된 역할에 추가됩니다. 이는 Looker의 모든 역할이 추가된다는 점에서 표준 역할과 동일합니다.
예를 들어 Looker에 그룹 ID가 1
인 기존 그룹이 있고 해당 그룹에 이미 model_one
이라는 모델에 대한 explore
권한이 있으며 다음 매개변수를 사용해 삽입 URL을 만든다고 가정해 보겠습니다.
group_ids
=["1"]
permissions
=["access_data","see_looks"]
models
=["model_two"]
이 경우 삽입 사용자는 model_one
에서 데이터를 보고 탐색할 수 있는 권한을 상속하며 위의 매개변수로 생성된 삽입 역할에는 model_two
에서 데이터를 볼 수 있는 권한도 부여됩니다.
삽입 URL 만들기
서명된 삽입 URL의 형식은 다음과 같습니다.
https://호스트/login/embed/삽입 URL?매개변수&signature=서명
호스트
호스트는 Looker 인스턴스가 호스팅되는 위치입니다. 예를 들면 analytics.mycompany.com
입니다. 포트 전달을 사용 설정하지 않았다면 포트 번호를 포함해야 합니다(예: analytics.mycompany.com:9999
).
삽입 URL
삽입 URL은 이미 위에서 결정했습니다. 형식은 다음과 같습니다.
/embed/looks/4
/embed/explore/my_model/my_explore
/embed/query-visualization/Query.client_id
/embed/dashboards/1
또는/embed/dashboards-legacy/1
/embed/dashboards/my_model::my_dashboard
또는/embed/dashboards-legacy/my_model::my_dashboard
즉, /embed//embed/
패턴이 최종 URL에 표시됩니다. 이는 올바른 패턴입니다.
삽입된 자바스크립트 이벤트를 사용하는 경우 다음과 같이 embed_domain
(iframe을 사용 중인 도메인)을 삽입 URL의 끝에 추가해야 합니다.
/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com
embed_domain
은 삽입 URL 뒤와 매개변수 앞 사이에 추가됩니다. 따라서 nonce=626
과 같은 기존 매개변수가 있는 경우 embed_domain
추가는 다음과 같습니다.
/embed/looks/4?nonce=626
/embed/looks/4?embed_domain=https://mywebsite.com?nonce=626
삽입 SDK를 사용하는 경우 다음과 같이 embed_domain
을 추가하고 삽입 URL의 끝에 sdk=2
도 포함합니다.
/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com&sdk=2
sdk=2
매개변수를 사용하면 Looker가 SDK가 있는지 식별하고 SDK에서 제공하는 추가 기능을 활용할 수 있습니다. SDK는 서명된 URL의 일부이므로 이 매개변수 자체를 추가할 수 없습니다.
매개변수
다음 URL 매개변수는 서명된 삽입에 필요한 정보를 지정하는 데 사용됩니다.
매개변수 | 기본값 | 설명 | 데이터 유형 | 예 |
---|---|---|---|---|
nonce |
값 필요 | 원하는 임의 문자열이지만 한 시간 이내에 반복할 수 없으며 255자(영문 기준) 미만이어야 합니다.이를 통해 공격자가 정당한 사용자의 URL을 다시 제출하여 얻어서는 안 될 정보를 수집하지 못하게 막습니다. | JSON 문자열 | "22b1ee700ef3dc2f500fb7" |
time |
값 필요 | UNIX 타임스탬프로 현재 시간입니다. | 정수 | 1407876784 |
session_length |
값 필요 | 사용자가 Looker에 로그인한 상태를 유지해야 하는 시간(초)으로서 0~2,592,000초(30일) 사이의 값입니다. | 정수 | 86400 |
external_user_id |
값 필요 | Looker를 삽입하는 애플리케이션의 각 사용자에 대한 식별자입니다. Looker는 서명된 임베딩 사용자를 구분하기 위해 external_user_id 를 사용하므로 각 사용자에게 할당된 고유한 ID가 있어야 합니다.사용자별로 고유한 문자열을 사용하면 원하는 문자열을 사용하여 사용자의 external_user_id 를 만들 수 있습니다. 각 ID는 권한, 사용자 속성, 모델 세트와 연결됩니다. 단일 브라우저는 한 번에 하나의 external_user_id 또는 사용자 세션만 지원할 수 있습니다. 세션 중에 사용자의 권한 또는 사용자 속성을 변경할 수 없습니다.보안상의 이유로 상호작용하는 여러 사용자들에게 서로 다른 삽입 세션에서 동일한 external_user_id 를 사용해서는 안 됩니다. 다양한 권한, 사용자 속성 값 또는 모델 액세스 권한을 가진 단일 사용자에게 동일한 external_user_id 를 사용해서도 안 됩니다.여러 사용자 또는 권한, 사용자 속성 또는 모델 세트에서 동일한 사용자에게 동일한 external_user_id 를 사용하면 액세스 권한이 없는 사용자에게 데이터가 표시될 수 있습니다. |
JSON 문자열 | "user-4" |
permissions |
값 필요 | 사용자에게 필요한 권한 목록입니다.허용된 권한 목록은 이 페이지의 권한 섹션을 참조하세요. | 문자열 배열 | [ "access_data", "see_looks" ] |
models |
값 필요 | 사용자가 액세스해야 하는 모델 이름의 목록입니다. | 문자열 배열 | [ "model_one", "model_two" ] |
group_ids |
[] | 사용자가 구성원이어야 하는 Looker 그룹 목록입니다(존재하는 경우). 그룹 이름 대신 그룹 ID를 사용합니다. | 문자열 배열 | ["4", "3"] |
external_group_id |
"" | Looker를 삽입하는 애플리케이션에서 사용자가 속한 그룹의 고유 식별자입니다(원하는 경우).콘텐츠를 저장하고 외부 그룹 ID를 공유할 권한이 있는 사용자가 공유 Looker 폴더('Group')에서 콘텐츠를 저장하고 수정할 수 있습니다. external_group_id 매개변수는 삽입 사용자의 외부 그룹을 만들기 위해 사용할 수 있는 유일한 방법입니다. Looker UI 내에서 외부 삽입 사용자 그룹을 구성할 수 있는 방법은 없습니다. |
JSON 문자열 | "Accounting" |
user_attributes |
{} | 사용자에게 있어야 하는 사용자 속성의 목록입니다(존재하는 경우). 사용자 속성 이름 다음에 사용자 속성 값이 뒤에 오는 목록을 포함합니다.LookML 모델이 현지화된 경우 삽입 URL에서 locale 사용자 속성을 사용하여 삽입 언어를 지정할 수 있습니다. 예를 들어 user_attributes { "locale" : "fr_FR" } 매개변수를 포함하면 삽입이 프랑스어를 언어로 로드합니다. |
문자열 해시 | { "vendor_id" : "17", "company" : "xactness" } |
access_filters |
값 필요 | Looker 3.10에서는 이 매개변수가 삭제되었지만 여전히 URL에 필요합니다. access_filters 를 빈 자리표시자(예: access_filters={} )와 함께 사용합니다. |
빈 자리표시자 | {} |
first_name |
"" | 사용자의 이름입니다. 비워 두면 first_name 이 마지막 요청의 값을 유지하거나 이름이 아예 설정되지 않은 경우 'Embed'가 사용됩니다. |
JSON 문자열 | "Alice" |
last_name |
"" | 사용자의 성입니다. 비워 두면 last_name 이 마지막 요청의 값을 유지하거나 성이 아예 설정되지 않은 경우 'Embed'가 사용됩니다. |
JSON 문자열 | "Jones" |
user_timezone |
"" | 사용자별 시간대를 사용 설정한 경우 삽입된 Look 또는 대시보드의 시간대 드롭다운에서 뷰어 시간대 옵션의 값을 설정합니다. 이 매개변수는 콘텐츠가 표시되는 시간대를 직접 변경하지 않습니다. 사용자가 드롭다운에서 원하는 시간대를 선택해야 합니다.서명된 삽입 시간대 참조 문서 페이지에서 유효한 값을 확인하세요.채팅팀 도움말: 삽입된 콘텐츠를 기본적으로 뷰어의 시간대로 설정하려면 다음 방법 중 하나를 사용합니다.?query_timezone=user_timezone 매개변수를 삽입 URL에 추가합니다. 예를 들면 다음과 같습니다./embed/dashboards/1?query_timezone=user_timezone |
JSON 문자열 또는 null | "US/Pacific" - 또는 -null |
force_logout_login |
값 필요 | 일반 Looker 사용자가 이미 Looker에 로그인했고 서명된 삽입 항목을 보는 경우 다음 중 하나를 선택할 수 있습니다.1) 현재 사용자 인증 정보로 항목을 보도록 합니다.또는2) 로그아웃했다가 서명된 삽입 인증 정보로 다시 로그인하도록 합니다. | 불리언(true 또는 false) | true |
서명
Looker는 서명을 사용하여 삽입 URL에 서명을 생성하는 데 올바른 삽입 보안 비밀이 사용되었는지와 삽입 URL의 매개변수가 변경되지 않았는지 확인합니다. 삽입 보안 비밀 또는 URL 매개변수가 다르거나 변경된 경우 서명이 일치하지 않고 인증이 거부됩니다.
따라서 삽입 URL의 서명은 삽입 URL이 전송 중에 수정되지 않았고 삽입 보안 비밀 키를 소유한 신뢰할 수 있는 당사자가 삽입 URL을 만들었음을 나타내는 암호화 방식의 강력한 증명을 제공합니다.
서명을 생성하려면 다음 단계를 따라야 합니다.
- 다음 매개변수 값을 이 순서대로 수집합니다.
- 뒤에
login/embed/
가 오는 호스트(예:analytics.mycompany.com/login/embed/
) - 삽입 URL
- Nonce
- 현재 시간
- 세션 길이
- 외부 사용자 ID
- 권한
- 모델
- 그룹 ID
- 외부 그룹 ID
- 사용자 속성
- 액세스 필터(빈 자리표시자 포함)
- 뒤에
- 호스트 및 삽입 URL을 제외한 모든 값의 형식을 JSON으로 지정
- 값을 줄바꿈으로 연결(
\n
) - HMAC-SHA1에서 Looker 삽입 보안 비밀 키로 연결된 문자열에 서명
인코딩
마지막 단계는 URL을 URL 인코딩하는 것입니다.
URL을 인코딩하기 전에는 가능한 모든 매개변수를 사용하는 올바른 형식의 삽입 URL이 다음과 같이 표시됩니다.
https://analytics.mycompany.com/login/embed//embed/dashboards/1?
nonce="22b1ee700ef3dc2f500fb7"&
time=1407876784&
session_length=86400&
external_user_id="user-4"&
permissions=["access_data","see_user_dashboards","see_looks"]&
models=["model_one","model_two"]&
group_ids=[4,3]&
external_group_id="Allegra K"&
user_attributes={"vendor_id":"17","company":"xactness"}&
access_filters={}&
first_name="Alice"&
last_name="Jones"&
user_timezone="US/Pacific"&
force_logout_login=true&
signature=123456789ABCDEFGHIJKL
앞에서 설명했듯이 /embed//embed/
가 URL에 표시되는 것이 정상입니다.
URL을 인코딩한 후에는 다음과 같이 표시됩니다.
https://analytics.mycompany.com/login/embed/%2embed%2Fdashboards%2F1?
nonce=%2222b1ee700ef3dc2f500fb7&%22&
time=1407876784&
session_length=86400&
external_user_id=%22user-4%22&
permissions=%5B%22access_data%22%2C%22see_user_dashboards%22%2C%22see_looks%22%5D&
models=%5B%22model_one%22%2C%22model_two%22%5D&
group_ids=%5B4%2C3%5D&
external_group_id=%22Allegra%20K%22&
user_attributes=%7B%22vendor_id%22%3A%2217%22%2C%22company%22%3A%22xactness%22%7D&
access_filters%7B%7D%26%0A
first_name=%22Alice%22&
last_name=%22Jones%22&
user_timezone=%22US%2FPacific%22&
force_logout_login=true&
signature=123456789ABCDEFGHIJKL
서명된 삽입 URL API 엔드포인트 만들기
Looker API에는 서명된 삽입 URL 만들기 엔드포인트가 포함됩니다. 이 엔드포인트는 삽입할 콘텐츠의 URL을 포함하는 서명된 삽입 매개변수 세트를 사용하며 인코딩되고 암호화 서명된 완전한 URL을 반환합니다.
웹 서버에서 이 API 엔드포인트를 사용하려면 웹 서버가 관리자 권한으로 Looker API에 인증할 수 있어야 합니다. 또한 웹 서버 도메인이 삽입 도메인 허용 목록에 있어야 합니다.
API 탐색기를 사용하여 이 엔드포인트를 사용하는 서명된 URL을 생성할 수도 있습니다. Looker Marketplace에서 Looker 인스턴스에 API 탐색기를 설치할 수 있습니다. 서명된 URL을 생성한 후에는 정확히 복사해야 하며 SSO URL은 한 번만 사용할 수 있습니다. 그렇지 않을 경우 실패합니다. API 탐색기는 또한 서명된 URL을 생성하고 문제 해결을 위해 수동으로 생성된 서명된 URL과 비교하는 데 유용합니다.
Looker API에 대한 자세한 내용은 Looker API 시작하기 문서 페이지를 참조하세요.
삽입 URL 테스트
최종 URL을 테스트하려면 Looker 관리 섹션의 삽입 페이지에 있는 삽입 URI 검사기에 붙여넣습니다. 이 옵션으로 생각한 데이터와 권한이 올바르게 설정되었는지는 알 수 없지만 인증이 제대로 작동하는지 검증할 수 있습니다.