MicroStrategy ONE
Workstation ID トークンを使用して MicroStrategy に接続
のmstrio-py Pythonライブラリは接続モジュール Intelligence Server とのセッションを開始します。標準および LDAP 認証モードをサポートしています。
セッションを開始するには、MicroStrategy REST API サーバーの URL、プロジェクト ID、ユーザー名、およびパスワードを挿入する必要があります。
コピー
from mstrio.connection import Connection
base_url = "https://your-microstrategy-server.com/MicroStrategyLibrary/api"
mstr_username = "Username"
mstr_password = "Password"
project_id = "PROJECT_ID"
conn = Connection(base_url, mstr_username, mstr_password, project_id=project_id)
ワークステーションで実行されるスクリプトは、グローバル変数にアクセスするように変更できます。workstationData
現在保存されている環境の ID トークンを使用します。この方法でセッションを開始することで、ユーザーは MicroStrategy REST API サーバーへの URL と資格情報をスクリプトに挿入する必要がなくなります。
コピー
import requests
from typing import Union
from mstrio.connection import Connection
from requests.cookies import RequestsCookieJar
def get_connection(workstation_data: dict, project_id: str = None,
project_name: str = None) -> Union[Connection, None]:
"""Get connection based on data saved in memory of Workstation. It is
possible to provide 'project_id' or 'project_name' to select project.
When both `project_id` and `project_name` are `None`, project selection
is cleared. When both `project_id` and `project_name` are provided,
`project_name` is ignored.
Project can be also selected later by calling function 'select_project'
on Connection object.
Args:
workstation_data (object): object which is stored in a 'workstationData'
variable within Workstation
project_id (str, optional): id of project to select
project_name (str, optional): name of project to select
Returns:
connection to I-Server or None is case of some error
"""
try:
print('Creating connection from Workstation Data object...', flush=True)
# get base url from Workstation Data object
base_url = workstation_data['defaultEnvironment']['url']
# get headers from Workstation Data object
headers = workstation_data['defaultEnvironment']['headers']
# get cookies from Workstation Data object
cookies = workstation_data['defaultEnvironment']['cookies']
# prepare cookies for request
jar = RequestsCookieJar()
for c in cookies:
cookie_values = {'domain': '', 'path': '/'}
cookie_values.update(c)
jar.set(cookie_values['name'], cookie_values['value'],
domain=cookie_values['domain'], path=cookie_values['path'])
except Exception as e:
print('Some error occurred while preparing data to get identity token:')
print(e)
return None
# get identity token
r = requests.post(base_url + 'api/auth/identityToken', headers=headers, cookies=jar)
if r.ok:
# create connection to I-Server
return Connection(base_url, identity_token=r.headers['X-MSTR-IdentityToken'],
project_id=project_id, project_name=project_name)
else:
print('HTTP %i - %s, Message %s' % (r.status_code, r.reason, r.text), flush=True)
return None
# get connection without selecting project
# conn = get_connection(workstationData)
# select project for connection
# conn.select_project(project_id = mstr_tutorial_id, project_name)
# get connection and select project (you can use id or name of project)
mstr_tutorial_id = 'B7CA92F04B9FAE8D941C3E9B7E0CD754'
mstr_tutorial_name = 'MicroStrategy Tutorial'
conn = get_connection(workstation_data=workstationData, project_id=mstr_tutorial_id)