Microsoft SharePoint インジェストの手動トークン更新認証を構成する
このページでは、Databricks への Microsoft SharePoint インジェストの手動トークン更新認証を構成する方法について説明します。
手順 1: SharePoint サイト ID を取得する
- ブラウザーで目的の SharePoint サイトにアクセスします。
- URLに
/_api/site/idを追加します。 - Enter キーを押します。
手順 2: SharePoint ドライブ名を取得する (省略可能)
SharePoint サイト内のすべてのドライブとドキュメントを取り込む場合は、この手順をスキップできます。ただし、ドライブのサブセットのみを取り込む場合は、ドライブの名前を収集する必要があります。
ドライブ名は左側のメニューにあります。各サイトには、 Documents というデフォルトのドライブがあります。組織には追加のドライブがある場合があります。たとえば、次のスクリーンショットのドライブには、 doclib1、 subsite1doclib1などが含まれています。

一部のドライブは、リストから非表示になっている場合があります。ドライブの作成者は、ドライブ設定でこれを構成できます。この場合、隠しドライブは サイト コンテンツ セクションに表示される可能性があります。

手順 3: Microsoft Entra ID でクライアントを作成する
この手順では、SharePoint ファイルにアクセスできるクライアントを作成します。
-
Microsoft Azure ポータル (
portal.azure.com) で、 Microsoft Entra ID をクリックします。「Microsoft Entra ID」で検索する必要があるかもしれません。
-
左側のメニューの 管理 セクションで、 アプリの登録 をクリックします。
-
「 新規登録 」をクリックします。

-
アプリケーションの登録 フォームで、次の操作を行います。
- 他のテナントがこのアプリケーションにアクセスできるようにするかどうか。
- 認証コードの取得に使用するリダイレクト URL。次のいずれかを指定します。
- 自分のサーバーのリダイレクト URL
https://127.0.0.1(https://127.0.0.1で実行されているサーバーがない場合でも、アプリはそのページにリダイレクトしようとします。コードは結果の URL に含まれており、URL の形式はhttps://127.0.0.1:5000/oauth2redirect?code=<code>) です。

アプリの詳細ページにリダイレクトされます。

-
次の値をメモします。
- アプリケーション (クライアント) ID
- ディレクトリ (テナント) ID
-
クライアント資格情報 : 証明書またはシークレットの追加 をクリックします。
-
「 + 新しいクライアントのシークレット 」をクリックします。

-
説明を追加します。
-
[ 追加 ] をクリックします。
更新されたクライアントシークレットのリストが表示されます。
-
クライアントシークレットの値をコピーして、安全に保管します。ページを離れた後は、クライアントシークレットにアクセスできません。
手順 4: クライアントに SharePoint ファイルへのアクセス権を付与する
クライアントが SharePoint ファイルにアクセスするには、次の 2 つのアクセス許可が必要です。
sites.read.alloffline_access
これにより、クライアントはアクセス権を持つすべてのサイトのすべてのファイルにアクセスできるようになります。これに問題がない場合は:
-
新しいノートブックで次の Python コードを実行します。
tenant_id、client_id、redirect_urlを変更します。Pythonimport requests# This is the application (client) id (obtained from the App Registration page)client_id = ""# This is the tenant id (obtained from the App Registration page)tenant_id = ""# A redirect URL is used in OAuth to redirect users to an# application after they grant permission to access their account.# In this setup, the authentication code is sent to this server.redirect_url = ""# ================= Do not edit code below this line. ==================# Authorization endpoint URLauthorization_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize"scopes = ["Sites.Read.All"]scope = " ".join(["https://graph.microsoft.com/{}".format(s) for s in scopes])scope += ("&offline_access")# Construct the authorization request URL.auth_params = {"client_id": client_id,"redirect_uri": redirect_url,"response_type": "code","scope": scope}auth_url = authorization_url + "?" + "&".join([f"{key}={value}" for key, value in auth_params.items()])print(auth_url)出力は URL です。
-
ブラウザで、コード出力のURLにアクセスします。
-
Microsoft 365 の資格情報を使用してサインインします。
-
要求されたアクセス許可 ダイアログ ボックスで、要求されたアクセス許可を確認します。それらに
sites.read.allとoffline_accessが含まれていること、およびそれらを快適に付与できることを確認します。 -
ページ上部の Eメール ID が、SharePoint データへのアクセスに使用する Eメール ID と一致していることを確認します。
-
クライアント名が前の手順の資格情報と一致することを確認します。

-
[同意する] をクリックします。
指定したリダイレクト URL にリダイレクトされます。また、認証コードも受け取る必要があります。
-
認証コードをメモします。
-
「権限が必要です」 というプロンプトが表示されない場合は、URLに
&prompt=consentを追加します。
ステップ 5: 更新トークンを取得する
この手順では、更新トークンをフェッチして認証を完了します。
-
次の Python コードを、前の手順でノートの新しいセルに貼り付けます。
tenant_id、client_id、redirect_urlを変更します。Python# Use the authentication code to get the refresh token. The code contains the characters &session_state=<string> at the end. Remove these characters and define the modified string as code:code = ""# This is the client secret (obtained from the Credentials and Secrets page)client_secret = ""# ================= Do not edit code below this line. ==================token_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"# Request parameterstoken_params = {"client_id": client_id,"client_secret": client_secret,"code": code,"grant_type": "authorization_code","redirect_uri": redirect_url,"scope": "profile openid email https://graph.microsoft.com/Sites.Read.All offline_access"}# Send POST request to token endpointresponse = requests.post(token_url, data=token_params)# Handle responseif response.status_code == 200:token_data = response.json()refresh_token = token_data.get("refresh_token")print("Refresh Token:", refresh_token)else:print("Error:", response.status_code, response.text)
次のステップ
- 取得した認証の詳細を格納するための接続を作成します。
- インジェスト パイプラインを作成します。