서비스 계정 인증 절차
4102 단어 googleapi
소개
개요
외부 프로그램에서 GoogleAPI로 Google 계정 리소스에 액세스하려면 Google 서비스 계정에서 OAuth2 인증이 필요합니다.
여기에서는 인증의 순서에 대해 써 갑니다.
필요한 것
· Google 계정
· Google API client Library (이번에는 파이썬)
인증 메커니즘
서비스 계정의 개인 키로 JWT(Json Web Token)를 생성하여 JWT에서 API용 토큰을 얻습니다.
프로젝트 선택 또는 생성
google developer console
Developer console에서 프로젝트 선택 or 새로 만들기
사용할 API 사용
API Manager 라이브러리에서 사용할 API를 선택하고 활성화합니다.
서비스 계정 생성
서비스 계정 키 만들기
자격 증명 ▷ 자격 증명 만들기 ▷ 서비스 계정 키 ▷ 새 서비스 계정 ▷ JSON ▷ 만들기
※작성 버튼을 누르면 「비밀키를 포함한 JSON 파일」이 자동으로 다운로드된다. 그 후 다운로드 할 수 없으므로주의.
클라이언트 ID 생성(관리자 권한이 필요한 경우)
자격 증명 ▷ 서비스 계정 관리 ▷ 만든 서비스 계정의 오른쪽 끝 점을 누릅니다 ▷ 편집 ▷ Gsuite 도메인 전체의 권한을 위임하려면 확인
클라이언트 ID를 볼 수 있는지 확인
서비스 계정에 도메인 전체 권한 위임
※관리자 권한이 필요한 경우의 순서입니다
관리 콘솔에 admin으로 로그인
보안 → 더보기 → 고급 설정 → "API 클라이언트 액세스 관리"
서비스 계정의 "클라이언트 ID", 사용하는 API의 "scope"를 입력하여 승인.
(JWT의 claim에 "sub":"user_email"의 추가가 필요.)
JWT 생성
만든 서비스 계정의 개인 키를 사용하여 JWT를 만듭니다.
$curl -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion="ここにJWT" https://www.googleapis.com/oauth2/v4/token
{
"access_token" : "ya29.Elo4BOPu_8xrvZdah28zt3dgrX-x87vdy_BbFVt07XEm83d1S6-uZHBOCyKJdafHwIdV3ZiVDRdqhP9TpE8Vzo6_QZeAofp_Z5rMK_uwf-q_h_yrNcgTccdgSkY",
"expires_in" : 3600,
"token_type" : "Bearer"
}
$curl -H 'Authorization: Bearer ya29.Elo4BNIcKX8SEqyTg7CwGrp32W75pUddHQJIvB_mtk31-qnuz8N8MGOkZjeOLykuch8ATNo2jfa-hHOpNOBFHVH7lUS8MRNTN6YQj_kpCN4afoZAH_TPimXxEbA' https://www.googleapis.com/admin/directory/v1/users/[email protected]
API client Library for python으로 구현하는 경우
client library 설치
$ pip install --upgrade google-api-python-client
Successfully installed google-api-python-client-1.6.2 httplib2-0.10.3 oauth2client-4.1.2 pyasn1-0.2.3 pyasn1-modules-0.0.9 rsa-3.4.2 six-1.10.0 uritemplate-3.0.0 ⇦くっついてくるもの
코드
credentials.pyfrom oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
scopes = ['https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.orgunit']
credentials = ServiceAccountCredentials.from_json_keyfile_name('/tmp/googleapi/serviceaccount.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('[email protected]') # 権限を委任
http_auth = credentials.authorize(Http())
자격 증명 개체를 생성하면 자격 증명이 유지됩니다.
Reference
이 문제에 관하여(서비스 계정 인증 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okhrn/items/91e007c2d3ca850f29f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
google developer console
Developer console에서 프로젝트 선택 or 새로 만들기
사용할 API 사용
API Manager 라이브러리에서 사용할 API를 선택하고 활성화합니다.
서비스 계정 생성
서비스 계정 키 만들기
자격 증명 ▷ 자격 증명 만들기 ▷ 서비스 계정 키 ▷ 새 서비스 계정 ▷ JSON ▷ 만들기
※작성 버튼을 누르면 「비밀키를 포함한 JSON 파일」이 자동으로 다운로드된다. 그 후 다운로드 할 수 없으므로주의.
클라이언트 ID 생성(관리자 권한이 필요한 경우)
자격 증명 ▷ 서비스 계정 관리 ▷ 만든 서비스 계정의 오른쪽 끝 점을 누릅니다 ▷ 편집 ▷ Gsuite 도메인 전체의 권한을 위임하려면 확인
클라이언트 ID를 볼 수 있는지 확인
서비스 계정에 도메인 전체 권한 위임
※관리자 권한이 필요한 경우의 순서입니다
관리 콘솔에 admin으로 로그인
보안 → 더보기 → 고급 설정 → "API 클라이언트 액세스 관리"
서비스 계정의 "클라이언트 ID", 사용하는 API의 "scope"를 입력하여 승인.
(JWT의 claim에 "sub":"user_email"의 추가가 필요.)
JWT 생성
만든 서비스 계정의 개인 키를 사용하여 JWT를 만듭니다.
$curl -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion="ここにJWT" https://www.googleapis.com/oauth2/v4/token
{
"access_token" : "ya29.Elo4BOPu_8xrvZdah28zt3dgrX-x87vdy_BbFVt07XEm83d1S6-uZHBOCyKJdafHwIdV3ZiVDRdqhP9TpE8Vzo6_QZeAofp_Z5rMK_uwf-q_h_yrNcgTccdgSkY",
"expires_in" : 3600,
"token_type" : "Bearer"
}
$curl -H 'Authorization: Bearer ya29.Elo4BNIcKX8SEqyTg7CwGrp32W75pUddHQJIvB_mtk31-qnuz8N8MGOkZjeOLykuch8ATNo2jfa-hHOpNOBFHVH7lUS8MRNTN6YQj_kpCN4afoZAH_TPimXxEbA' https://www.googleapis.com/admin/directory/v1/users/[email protected]
API client Library for python으로 구현하는 경우
client library 설치
$ pip install --upgrade google-api-python-client
Successfully installed google-api-python-client-1.6.2 httplib2-0.10.3 oauth2client-4.1.2 pyasn1-0.2.3 pyasn1-modules-0.0.9 rsa-3.4.2 six-1.10.0 uritemplate-3.0.0 ⇦くっついてくるもの
코드
credentials.pyfrom oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
scopes = ['https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.orgunit']
credentials = ServiceAccountCredentials.from_json_keyfile_name('/tmp/googleapi/serviceaccount.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('[email protected]') # 権限を委任
http_auth = credentials.authorize(Http())
자격 증명 개체를 생성하면 자격 증명이 유지됩니다.
Reference
이 문제에 관하여(서비스 계정 인증 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okhrn/items/91e007c2d3ca850f29f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
※관리자 권한이 필요한 경우의 순서입니다
관리 콘솔에 admin으로 로그인
보안 → 더보기 → 고급 설정 → "API 클라이언트 액세스 관리"
서비스 계정의 "클라이언트 ID", 사용하는 API의 "scope"를 입력하여 승인.
(JWT의 claim에 "sub":"user_email"의 추가가 필요.)
JWT 생성
만든 서비스 계정의 개인 키를 사용하여 JWT를 만듭니다.
$curl -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion="ここにJWT" https://www.googleapis.com/oauth2/v4/token
{
"access_token" : "ya29.Elo4BOPu_8xrvZdah28zt3dgrX-x87vdy_BbFVt07XEm83d1S6-uZHBOCyKJdafHwIdV3ZiVDRdqhP9TpE8Vzo6_QZeAofp_Z5rMK_uwf-q_h_yrNcgTccdgSkY",
"expires_in" : 3600,
"token_type" : "Bearer"
}
$curl -H 'Authorization: Bearer ya29.Elo4BNIcKX8SEqyTg7CwGrp32W75pUddHQJIvB_mtk31-qnuz8N8MGOkZjeOLykuch8ATNo2jfa-hHOpNOBFHVH7lUS8MRNTN6YQj_kpCN4afoZAH_TPimXxEbA' https://www.googleapis.com/admin/directory/v1/users/[email protected]
API client Library for python으로 구현하는 경우
client library 설치
$ pip install --upgrade google-api-python-client
Successfully installed google-api-python-client-1.6.2 httplib2-0.10.3 oauth2client-4.1.2 pyasn1-0.2.3 pyasn1-modules-0.0.9 rsa-3.4.2 six-1.10.0 uritemplate-3.0.0 ⇦くっついてくるもの
코드
credentials.pyfrom oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
scopes = ['https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.orgunit']
credentials = ServiceAccountCredentials.from_json_keyfile_name('/tmp/googleapi/serviceaccount.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('[email protected]') # 権限を委任
http_auth = credentials.authorize(Http())
자격 증명 개체를 생성하면 자격 증명이 유지됩니다.
Reference
이 문제에 관하여(서비스 계정 인증 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okhrn/items/91e007c2d3ca850f29f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$curl -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion="ここにJWT" https://www.googleapis.com/oauth2/v4/token
{
"access_token" : "ya29.Elo4BOPu_8xrvZdah28zt3dgrX-x87vdy_BbFVt07XEm83d1S6-uZHBOCyKJdafHwIdV3ZiVDRdqhP9TpE8Vzo6_QZeAofp_Z5rMK_uwf-q_h_yrNcgTccdgSkY",
"expires_in" : 3600,
"token_type" : "Bearer"
}
$curl -H 'Authorization: Bearer ya29.Elo4BNIcKX8SEqyTg7CwGrp32W75pUddHQJIvB_mtk31-qnuz8N8MGOkZjeOLykuch8ATNo2jfa-hHOpNOBFHVH7lUS8MRNTN6YQj_kpCN4afoZAH_TPimXxEbA' https://www.googleapis.com/admin/directory/v1/users/[email protected]
$ pip install --upgrade google-api-python-client
Successfully installed google-api-python-client-1.6.2 httplib2-0.10.3 oauth2client-4.1.2 pyasn1-0.2.3 pyasn1-modules-0.0.9 rsa-3.4.2 six-1.10.0 uritemplate-3.0.0 ⇦くっついてくるもの
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
scopes = ['https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.orgunit']
credentials = ServiceAccountCredentials.from_json_keyfile_name('/tmp/googleapi/serviceaccount.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('[email protected]') # 権限を委任
http_auth = credentials.authorize(Http())
Reference
이 문제에 관하여(서비스 계정 인증 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/okhrn/items/91e007c2d3ca850f29f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)