ポイント: Microsoft Power BIや他のMicrosoft APIを使用するには、oAuth2を介してアクセストークンを取得することが不可欠です。このチュートリアルでは、アプリケーションを登録し、認証コードを取得し、API使用のためのアクセストークンを取得する手順について説明します。
- 資格情報を生成するためにPower BIにアプリケーションを登録します。
- API呼び出しのためのアクセストークンを取得するためにoAuth2認証に従います。
Microsoft Power BIまたは他のMicrosoft APIを使用するには、アクセストークン(ベアラートークン)を取得する必要があります。これは、Microsoftが認証のために業界標準プロトコルであるoAuth2を使用しているためです。(言い換えれば、単純なAPIキーやユーザー名とパスワードだけでは不十分です。)このチュートリアルでは、その方法を説明します。注意: curlを使用してMicrosoftエンドポイントにデータを投稿します。これはPostmanのコマンドライン版のようなものです。MacやUbuntuではcurlはすでにインストールされています。Windowsではインストールが必要な場合があります。
Power BIの登録
これが初めての場合、oAuth2認証の両方のステップを実行するために、ステップ0があります。まず、資格情報を取得する手段としてアプリケーションを登録する必要があります。これは一度だけ行います。これにより、アプリケーションIDとシークレットキーが生成されます。Microsoft Power BIの場合は、次のように行います: まず、埋め込みツールにログインします。https://app.powerbi.com/embedsetup/UserOwnsData これはAzureにログインしてActive Directoryにアプリケーションを作成するのとは異なります。あなたはPower BIのAzureアカウントにアプリケーションを作成しています(そう考えることができます)。次に、以下の画面に記入します。以下に注意してください:
- URLには任意のウェブページを使用できます。このウェブページに渡されるパラメータを以下で示すように確認します。
- コンテンツのインポートと表示される画面はスキップしてください。
- APIアクセスではすべて選択をクリックしてください。
- 最後に、アプリケーションIDとアプリケーションシークレットをコピーして保存します。
REST APIのためのoAuth2の使用
登録が完了したら、このステップに進むことができます。基本的な認証は、アクセスにユーザーIDとパスワードだけが必要な場合です。しかし、MicrosoftはoAuth2認証を使用しています。Microsoft APIは、APIを使用するためにAuthorizationヘッダーを提示する必要があります。基本的に、oAuth2は二段階のプロセスです:
- login.microsoftonline.comにPOSTを行います
- ステップ1から取得したアクセストークン(ベアラートークン)をAuthorizationというヘッダーに渡して、呼び出すAPIに渡します。
トークンの取得 (コード)
認可コードを取得するには、次のURLをクリックしてブラウザを開きます: https://login.microsoftonline.com/common/oauth2/authorize?client_id=(appid)&response_type=code&response_mode=query&redirect_uri=(url you put when you registered app)&scope=openid&state=foo 基本的には、アプリケーションを登録したときに入力したURLに移動します。しかし、特定の権限を付与するように求める画面がポップアップします:
- response_type: code
- response_mode: query
- state: foo(任意の値で構いません。これは自由形式のデータのための場所です。)
- scope: openid(offline_accessを追加することもできます。)
- url: 同じURLを使用しますが、異なるMicrosoftエンドポイントを呼び出すために、後でauthorizeとtokenにURIを変更します。
注意: ここでのテナントIDはcommonであり、マルチテナントIDではありません。commonは、Azureアカウントに関連付けられているテナントIDを取得することを意味します。
今、この時点でMicrosoftが作成したコードを取得するために何らかのウェブリスナーを書いていたかもしれません。しかし、私たちはChromeブラウザのデバッガーを使用して、Microsoftが私たちのウェブページに渡したクエリパラメータを確認します。Microsoftが指定したウェブページにリダイレクトされると、ブラウザのネットワークタブに移動し、ブラウザの更新ボタンをクリックします。次に、コードフィールドをクリックし、cURLとしてコピーを押します。コード(トークン)は、以下のようにクエリパラメータコードとして表示されます。
https://walkercodetutorials.com/?code=0.ASsARY...
この時点で、URLがPower BIのURLではないのはなぜか疑問に思っているかもしれません。それは、あなたがPower BIにアプリケーションを登録したからです。したがって、MicrosoftはPower BIを使用したいことを知っています。リダイレクトURLは、このコードを取得するための場所としてのみ機能します。今後は、毎回ブラウザをクリックすることは避けるべきです。これはバッチプログラムの動作方法ではありません。したがって、プロンプト設定をMicrosoft Identity Platformのリファレンスガイドを参照して変更する方法を確認してください。
アクセストークンの取得
次のステップを示すためにcurlを使用します。この方法でアクセストークン(ベアラートークン)を取得します。値は:
- grant_type: "authorization_code"を入力
- client_id: 上記のアプリケーションID(上記の点は私の実際のIDを隠しています。)
- client_secret: 上記のアプリケーションシークレット
- redirect_uri: 上記と同じ
- scope: 上記と同じ
- url: エンドポイントがtokenに変更されていることに注意
curl -X POST --form 'grant_type=authorization_code' --form 'client_id=7...5' --form 'client_secret=21dVzEgtjUhfyZS3AJDaH0eMYB0q0ovYeH4YUoa//FM' --form 'scope=openid%20offline_access'--form 'response_type=code' --form 'redirect_uri=https://walkercodetutorials.com/' --form 'code=0.AS...AA' https://login.microsoftonline.com/common/oauth2/token
戻り値:
{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1614591204","not_before":"1614587304","resource":"https://analysis.windows.net/powerbi/api","access_token":"ey….G8CYZQT6t2p5IC1r3E7D_koNqc6h_-f3918o_BP2N0YOweCKKZ7WCw"}
Microsoft APIアクセスのテスト
前のステップからaccess_tokenの値を取得し、以下に示すようにAuthorizationヘッダーの値として追加します。(有効期限が切れるまで1時間あります。)これは、たとえば、Power BIのマイワークスペースにあるデータセットのリストを返す方法です。(これは、無料のPower BIアカウントのデフォルトのワークスペースであり、個人の使用に限ります。エンタープライズアカウントとは異なります。)注意: myorgはあなたの組織を意味するのではありません。それはMicrosoftによって必要とされるプレースホルダーです。
curl -X GET -H "Authorization: Bearer ey….W_A" -H "Content-Type: application/json" https://api.powerbi.com/v1.0/myorg/datasets
これでこのチュートリアルは終了です。
関連文献
Power BI ガイド
これらの投稿は私自身の意見であり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。