接続の確立
JDBC データソースの作成
Java アプリケーションから接続するJDBC データソースを作成できます。CData JDBC Driver for Microsoft Teams に基づくJDBC データソースの作成は、3つの基本ステップで構成されます。
- ドライバーのJAR ファイルをクラスパスに追加します。JAR ファイルはインストールディレクトリの[lib]サブフォルダ内にあります。.lic ファイルはJAR ファイルと同じフォルダ内に配置される必要があることに注意してください。
- ドライバークラスを入力します。次に例を示します。
cdata.jdbc.msteams.MSTeamsDriver
- JDBC URL を入力します。次に例を示します。
jdbc:msteams:InitiateOAuth=GETANDREFRESH; or jdbc:cdata:msteams:InitiateOAuth=GETANDREFRESH;
上記の2つ目の形式は、同じURL 形式を使用しているドライバー間でアプリケーションに競合がある場合は、CData ドライバーを使用していることを確認するために常に使用できます。URL は "jdbc:msteams:" または"jdbc:cdata:msteams:" のいずれかから始まり、任意の接続プロパティの名前と値のペアをセミコロン区切りで入力します。
Microsoft Teams への接続
Azure AD
Azure AD は、OAuth を使用して認証する接続タイプです。OAuth では認証するユーザーにインターネットブラウザでMicrosoft Teams との通信を要求します。下記で説明するとおり、本製品 はさまざまな方法でこれをサポートします。 AuthScheme をAzureAD に設定します。すべてのAzure AD フローは、すでに設定済みであることを前提として書かれています。
デスクトップアプリケーション
CData は、OAuth デスクトップ認証を簡略化する埋め込みOAuth アプリケーションを提供します。代わりに、カスタムOAuth アプリケーションを作成することも可能です。カスタムアプリケーションの作成およびその理由については、カスタムAzureAD アプリの作成 を参照してください。認証に関する2つの方法の違いは、カスタムOAuth アプリケーションを使用する場合に、2つの接続プロパティを追加で設定する必要があることだけです。
次の接続プロパティを設定して、接続してください。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- OAuthClientId:(カスタムアプリケーションのみ)アプリケーション設定のクライアントId に設定。
- OAuthClientSecret:(カスタムアプリケーションのみ)アプリケーション設定のクライアントシークレットに設定。
- CallbackURL:アプリケーション設定のリダイレクトURL に設定。
接続すると、本製品 はデフォルトブラウザでOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。本製品 はこれでOAuth プロセスを完了します。
- コールバックURL からアクセストークンを取得し、リクエストを認証します。
- 古いトークンの期限が切れたときは、新しいアクセストークンを取得します。
- OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化します。
Web アプリケーション
Web アプリケーション経由で接続する場合は、 Microsoft Teams にカスタムOAuth アプリを登録する必要があります。カスタムAzureAD アプリの作成 を参照してください。それから本製品 を使用してOAuth トークンの値を取得および管理します。 OAuth アクセストークンの取得
認証タイプに応じて以下のいずれかの接続プロパティグループを設定して、OAuthAccessToken を取得します。
- クライアントシークレットを使用した認証
- OAuthClientId:アプリ設定のクライアントId に設定。
- OAuthClientSecret:アプリ設定のクライアントシークレットに設定。
- 証明書を使用した認証
- OAuthClientId:アプリ設定のクライアントId に設定。
- OAuthJWTCert:JWT 証明書ストアを設定。
- OAuthJWTCertType:OAuthJWTCert で指定された証明書ストアの種類に設定。
続いてストアドプロシージャを呼び出し、OAuth 交換を完了します。
-
GetOAuthAuthorizationURL ストアドプロシージャを呼び出します。AuthMode インプットをWEB に、CallbackURL インプットをアプリケーション設定で指定したリダイレクトURI に設定します。必要に応じて、Permissions パラメータを設定してカスタム権限をリクエストします。
ストアドプロシージャがOAuth エンドポイントのURL を返します。
- URL を開き、ログインして、アプリケーションを認可します。コールバックURL にリダイレクトされます。
- GetOAuthAccessToken ストアドプロシージャを呼び出します。AuthMode インプットをWEB に設定します。Verifier インプットを、コールバックURL のクエリ文字列の"code" パラメータに設定します。必要に応じて、Permissions パラメータを設定してカスタム権限をリクエストします。
OAuthAccessToken 接続プロパティをストアドプロシージャで返されたアクセストークンに設定し、データに接続します。ExpiresIn 秒後に、アクセストークンの期限が切れたときは、GetOAuthAccessToken を呼び出し、新しいアクセストークンを取得します。
ヘッドレスマシン
ヘッドレスマシンのユーザーアカウントでOAuth を使用するようにドライバーを設定するには、インターネットブラウザに対応した別の端末で認証する必要があります。
- 以下の2つのオプションから選択します。
- オプション1:後述の「Verifier code を取得および交換」に従い、OAuthVerifier 値を取得します。
- オプション2:別のマシンに本製品 をインストールし、後述の「OAuth 設定を転送」の説明に従い、通常のブラウザベースのフローで認証後にOAuth 認証値を転送します。
- その後、ヘッドレスマシンからアクセストークンを自動的にリフレッシュするように本製品 を設定します。
オプション1:Verifier code を取得および交換
Verifier code を取得するには、OAuth Authorization URL で認証する必要があります。
インターネットブラウザに対応したマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。
- 以下のオプションから選択します。
- 埋め込みOAuth アプリケーションを使用する場合は、Microsoft Teams OAuth endpoint をクリックし、ブラウザでエンドポイントを開きます。
- カスタムOAuth アプリケーションを使用するには、以下のプロパティを設定し、認証URL を作成します。
- InitiateOAuth:OFF に設定。
- OAuthClientId:アプリケーションの登録時に割り当てられたクライアントId に設定。
- OAuthClientSecret:アプリケーションの登録時に割り当てられたクライアントシークレットに設定。
- ログインして、本製品 にアクセス許可を与えます。すると、verifier code を含むコールバックURL にリダイレクトされます。
- verifier code の値を保存します。後ほどこれをOAuthVerifier 接続プロパティに設定します。
ヘッドレスマシンでは、次の接続プロパティを設定してOAuth 認証値を取得します。
- InitiateOAuth:REFRESH に設定。
- OAuthVerifier:verifier code に設定。
- OAuthClientId:(カスタムアプリのみ)カスタムOAuth アプリケーション設定のクライアントId に設定。
- OAuthClientSecret:(カスタムアプリのみ)カスタムOAuth アプリケーション設定のクライアントシークレットに設定。
- OAuthSettingsLocation:ドライバーがOAuth トークン値を保存するファイルのパスを設定。これは接続間で維持されます。
OAuth 設定ファイルが生成されたら、以下のように接続プロパティをリセットする必要があります。
- InitiateOAuth:REFRESH に設定。
- OAuthClientId:(カスタムアプリのみ)アプリケーションの登録時に割り当てられたクライアントId に設定。
- OAuthClientSecret:(カスタムアプリのみ)アプリケーションの登録時に割り当てられたクライアントシークレットに設定。
- OAuthSettingsLocation:暗号化されたOAuth 認証値を含むファイルに設定。アクセストークンの自動リフレッシュを有効にするために、このファイルが本製品 に読み書きのアクセス許可を付与することを確認してください。
オプション2:OAuth 設定を転送
ヘッドレスマシンでの接続に先立ち、インターネットブラウザに対応したデバイスでドライバとの接続を作成し、インストールする必要があります。上述の「デスクトップアプリケーション」の説明に従って、接続プロパティを設定します。
「デスクトップアプリケーション」の手順が完了すると、生成された認証値は、OAuthSettingsLocation で指定されたパスに暗号化されて書き込まれます。デフォルトのファイル名はOAuthSettings.txt です。
接続が正常にテストされたら、OAuth 設定ファイルをヘッドレスマシンにコピーします。
ヘッドレスマシンで、次の接続プロパティを設定し、データに接続します。
- InitiateOAuth:REFRESH に設定。
- OAuthClientId:(カスタムアプリのみ)アプリケーションの登録時に割り当てられたクライアントId に設定。
- OAuthClientSecret:(カスタムアプリのみ)アプリケーションの登録時に割り当てられたクライアントシークレットに設定。
- OAuthSettingsLocation:OAuth 設定ファイルのパスに設定。アクセストークンの自動リフレッシュを有効にするために、このファイルが本製品 に読み書きのアクセス許可を与えることを確認してください。
管理者の同意
管理者の同意とは、Azure Active Directory テナントの管理者が、管理者の同意を必要とするアプリケーションに権限を付与することを指します。 CData JDBC Driver for Microsoft Teams 内の埋め込みアプリには、管理者の同意を必要とするアクセス許可はありません。したがって、この情報はカスタムアプリケーションにのみ適用されます。
管理者の同意の付与
Azure ポータルで新しいAzureAD アプリを作成する場合には、アプリに必要なアクセス許可を指定する必要があります。一部のアクセス許可には、「管理者の同意が必要」と記載されている場合があります。 例えば、すべてのグループのアクセス許可には管理者の同意が必要です。アプリに管理者の同意が必要な場合、いくつかの方法があります。
管理者の同意を付与する最も簡単な方法は、管理者がportal.azure.com にログインして、[アプリの登録]で作成したアプリに移動するだけです。API のアクセス許可で、 同意の付与をクリックして、アプリが作成されたテナントでアクセス権限を持つようにします。
組織に複数のテナントがある場合、または組織外の他のテナントにアプリのアクセス許可を与える必要がある場合、GetAdminConsentURL ストアドプロシージャを使用してAdmin Authorization URL を生成します。GetOAuthAuthorizationURL とは異なり、このエンドポイントから返される重要な情報はありません。OAuth アプリケーションが正常に認可されると、アクセス権限が付与されたことを示すBoolean 値が返されます。
管理者がOAuth アプリケーションを承認後、認証を続行できます。
クライアントクレデンシャル
クライアント資格情報は、直接ユーザー認証が行われないOAuth のフローを指します。代わりに、資格情報はアプリ自体のためだけに作成されます。 アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。そのため、認証フローが標準とは少し違ったものになります。クライアントOAuth フロー
クライアントOAuth フローに関連するすべての権限には、管理者の同意が必要です。これは、CData JDBC Driver for Microsoft Teams が埋め込まれたアプリをクライアントOAuth フローでは使用できないことを意味します。クライアント資格情報を使用するには、独自のOAuth アプリの作成が必要になります。 詳しくは、カスタムAzureAD アプリの作成 を参照してください。
portal.azure.com の[アプリの登録]で[API のアクセス許可]に移動し、Microsoft Graph アクセス許可を選択します。アクセス許可には、委任されたアクセス許可とアプリケーションの許可の2つの異なるアクセス許可セットがあります。 クライアントの資格情報認証時に使用されるアクセス許可は、[アプリケーションの許可]の下にあります。インテグレーションに必要なアクセス許可を選択します。
認証タイプに応じていずれかの接続プロパティグループを設定すると、接続できるようになります。
- クライアントシークレットを使用した認証
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- AzureTenant:接続するテナントに設定。
- OAuthGrantType:CLIENT に設定。
- OAuthClientId:アプリ設定のクライアントId に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
- 証明書を使用した認証
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- AzureTenant:接続するテナントに設定。
- OAuthGrantType:CLIENT に設定。
- OAuthClientId:アプリ設定のクライアントId に設定。
- OAuthJWTCert:JWT 証明書ストアを設定。
- OAuthJWTCertType:OAuthJWTCert で指定された証明書ストアの種類に設定。
クライアント資格情報での認証は、他の接続同様に自動的に行われますが、ユーザーにプロンプトするウィンドウは表示されません。ユーザーコンテキストがないため、ブラウザのポップアップは必要ないからです。接続が行われ、内部的に処理されます。
Azure サービスプリンシパル
Azure サービスプリンシパルは、OAuth を経由する接続タイプです。AuthScheme をAzureServicePrincipal に設定します。 Azure サービスプリンシパルとしての認証は、OAuth クライアントクレデンシャルフローを介して処理され、直接のユーザー認証は行われません。代わりに、クレデンシャルはアプリ自体のためだけに作成されます。アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。 リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
Note: ロールを割り当てる前に、カスタムアプリケーションを作成する必要があります。詳しくは、カスタムAzureAD アプリの作成 を参照してください。
Azure サービスプリンシパルを使用して認証する場合、Azure AD テナントにアプリケーションを登録する必要があります。以下の手順に従って、ロールベースのアクセス制御で使用できる新しいサービスプリンシパルを作成します。
アプリケーションへのロールの割り当て
サブスクリプションのリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。- 検索バーでサブスクリプションサービスを検索・選択して、[サブスクリプション]ページを開きます。
- アプリケーションを割り当てる特定のサブスクリプションを選択します。
- [アクセス制御 (IAM)]を開き、[追加]->[ロール割り当ての追加]を選択して[ロール割り当ての追加]ページを開きます。
- 作成したAzure AD アプリに割り当てるロールとして、[所有者]を選択します。
認証の完了
設定されたアプリ認証(クライアントシークレットまたは証明書)に応じて、以下のいずれかの接続プロパティグループを設定すると、接続できるようになります。両メソッド共通
クライアントシークレットか証明書認証を選択する前に、まず以下の手順に従って設定を行います。その後、該当するセクションの設定に進んでください。
- AuthScheme:アプリ設定のAzureServicePrincipal に設定。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使えば、繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要はなくなります。
- AzureTenant:接続するテナントに設定。
- OAuthClientId:アプリ設定のクライアントId に設定。
続いて、以下を設定します。
- OAuthClientId:アプリ設定のクライアントId に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
証明書を使用した認証
続いて、以下を設定します。
- OAuthJWTCert:JWT 証明書ストアを設定。
- OAuthJWTCertType:OAuthJWTCert で指定された証明書ストアの種類に設定。
MSI
Azure VM 上でMicrosoft Teams を実行している場合は、Managed Service Identity(MSI)の資格情報を利用して接続が可能です。
- AuthScheme:AzureMSI に設定。
MSI 資格情報が認証用に自動的に取得されます。