
こんにちは。プロダクトチームの周です。
CData API Server は、OpenID 規格によるシングルサインオン(SSO)をサポートしております。V25 ではBeta 版での提供となりますが、Azure Active Directory(Azure AD)のようなOpenID を実装したID プロバイダーは、API Server のSSO プラットフォームとして利用可能です。本記事ではAzure AD を使用して、CData API Server にシングルサインオン (SSO) 認証で管理コンソールにログインできるようにする方法をご紹介します。
1.シングルサインオン (SSO) とは
シングルサインオン (SSO) は、一度ログインするだけで、複数のサービスにログインして利用できる仕組みです。
利便性が向上するだけでなく、複数のアカウントを管理しなくて済むことで、セキュリティを向上させることができます。
2.用意するもの
証明書(*.cer)
OpenSSL 等を使用して生成する方法以外に、Azure AD でも生成することができます。
チュートリアル: フェデレーション証明書の管理 - Microsoft Entra | Microsoft Learn
3.CData API Server のSSO 認証設定(Azure AD の場合)
設定項目の一覧は以下の通りです。
・Azure AD 側の設定
1) Azure ポータルの「アプリの登録」画面からアプリを新規登録
2) 「証明書とシークレット」の「クライアントシークレット」でOAuthClientSecret を発行
3) 「証明書とシークレット」の「証明書」にAPI Server の証明書をアップロード
4) 「API のアクセス許可」で「openid」を追加
5) 「リダイレクトURI」にAPI Server のシングルサインオン(SSO) 設定ページにある「コールバックURL」を追加
・API Server 側の設定
オーディエンスURI:Azure AD アプリの「アプリケーション(クライアント)ID」
Key Claim:「oid」、(API Server ユーザーのフェデレーションIdと突き合わせる項目名として、Azure AD ユーザーの「オブジェクトID」を指定)
OAuth クライアントID:Azure AD アプリの「アプリケーション(クライアント)ID」
OAuth クライアントシークレット:Azure AD アプリの「証明書とシークレット」で発行した「クライアントシークレットの値」(「シークレットID」ではない)
URL をインポート:Azure AD アプリ概要ページのエンドポイントにある、OpenID Connect メタデータ ドキュメントURL を指定してインポートをクリックすると、Azure AD から設定をインポートできます。
発行者証明書:証明書アップロード
デフォルトスコープ: openid profile
トークン発行者識別子:https://login.microsoftonline.com/<ディレクトリ(テナント)id>/v2.0
トークンURL:https://login.microsoftonline.com/<ディレクトリ(テナント)id>/oauth2/v2.0/token
ログオフURL:https://login.microsoftonline.com/<ディレクトリ(テナント)id>/oauth2/v2.0/logoutディレクトリ(テナント)id>ディレクトリ(テナント)id>ディレクトリ(テナント)id>
3.1.Azure ポータルでアプリを登録する
Azure ポータルの「アプリの登録」画面で、「新規登録」をクリックします。

名前を入力し、「登録」をクリックします。

3.2.クライアントシークレットを追加する
「証明書とシークレット」の「クライアントシークレット」で、「新しいクライアントシークレット」をクリックし、「追加」をクリックします。

表示された値脇のコピーアイコンをクリックして、(「シークレットID」ではなく)クライアントシークレットの「値」を控えます。

3.3.証明書をアップロードする
「証明書のアップロード」をクリックし、証明書を選択して、「追加」をクリックします。

3.4.API のアクセス許可を設定する
「API のアクセス許可」で、「アクセス許可の追加」をクリックし、「openid」を追加します。

「認証」で、「プラットフォームを追加」をクリックし、「Web」を選択し、CData API Server のシングルサインオン (SSO) 設定画面の「コールバックURL」を追加します。

概要の「エンドポイント」をクリックし、設定に必要なエンドポイントを確認します。

3.5.CData API Server のシングルサインオン (SSO) 設定画面で設定を行う
CData API Server に必要な設定を入力します。
「設定URLをインポート」項目にOpenID Connect メタデータ ドキュメントURL を指定し、「インポート」をクリックするとURLの設定などをAzure AD からインポートすることができます。

設定が完了したら保存をクリックします。
この時点では、まだ設定が完了していないため「接続テスト」を行うことはできません。
3.6.ユーザーにフェデレーションId を設定する
設定画面でユーザータブでユーザーの編集画面を開き、「フェデレーションId」項目にAzure AD でのユーザーを識別する値を指定します。
この項目で指定する値がどの項目になるかは、「Key Claim」によって決まります。
「oid」を指定した場合、該当Azure AD ユーザーの「オブジェクト ID」を指定します。


これで、設定が完了しました。
最後に接続テストを行って、実際に認証が行えることを確認します。
3.7.「接続テスト」を行い、認証が行えることを確認する
「接続テスト」をクリックすると、Microsoft のログイン画面が表示されるので、先ほどフェデレーションId で紐づけたユーザーでログインを行います。
設定完了後の画面はこのようになります。

4.実際にシングルサインオン (SSO) 認証でCData API Server にログインしてみる
ログアウトを行い、ログイン画面を表示されると、「SSO でサインオン」ボタンがクリックできるようになります。

「SSO でサインオン」をクリックすると、Microsoftのログイン画面が表示されるので、フェデレーションId で紐づけたユーザーでログインを行うと、CData API Server にログインすることができます。

5.まとめ
シングルサインオン(SSO) 認証は複数のサービスを跨ぐため、初めて設定する際はハードルが高く感じるかもしれません。
しかし、一度設定できてしまえば、認証を一元管理することができるようになり、セキュリティを向上させながら、運用の負担を減らすことができます。
CData API Server を複数のユーザーで使用する場合は、シングルサインオン(SSO) 認証の利用を検討してみてはいかがでしょうか