PassLogic を使ってみた(SAML 認証編)

    PassLogic を使ってみた(SAML 認証編)

    目次

      はじめに

      クラウドインテグレーション部の峰松優太です。

      本シリーズ記事では、PassLogic を利用して以下の 2 つを実現します。

      • SAML 認証連携による PassLogic 認証を利用した Microsoft 365 へのログイン
      • PassLogic for Windows Desktop による PassLogic 認証を利用した PC へのログオンおよび Microsoft 365 へのシームレスサインオン

      PassLogic とは デバイスレス・ワンタイムパスワード を用いた認証プラットホームであり、パスロジ株式会社より提供されてます。

      PassLogic 公式より、以下 2 つの記事が公開されています。

      これらのシステムを実際に構築し、詰まった点や考慮すべきだと感じた点について紹介します。

      なお、今回の全構築作業を以下 3 フェーズに分割しています。

      本記事では、フェーズ 2 について記載します。

      • Microsoft Entra Connect による AD と Entra ID の同期
      • SAML 認証連携による PassLogic 認証を利用した Microsoft 365 へのログイン

      202405_passlogi2_001

      Microsoft Entra Connect

      Microsoft Entra Connect (旧 Azure AD Connect) を用いて AD と Entra ID を同期します。

      Microsoft 公式ドキュメント に従い、Entra Connect を実施します。
      今回は AD サーバに Entra Connect をダウンロードして実行し、OU "PassLogic" のみを同期対象としました。

      202405_passlogi2_002


      Entra Connect 実施後、AD ユーザ ym に相当するユーザが Entra ID に追加されており、Microsoft 365 へのログインが可能になります。

      ソースアンカー

      Entra Connect の完了画面で、こんなことが書かれていますね。

      Azure Active Directory (現 Entra ID) では AD 属性 mS-DS-ConsistencyGuid をソースアンカー属性として使用するように構成されています。

      ソースアンカー (sourceAnchor) とは

      • AD と Entra ID で同一オブジェクトを一意に識別する
      • オブジェクト有効期間内では不変 (Immutable) であることから、Entra ID では ImmutableId とも呼ばれる
      • 同期対象が User の場合は mS-DS-ConsistencyGuid 属性がデフォルトで指定される
      • mS-DS-ConsistencyGuid 属性に値が設定されてない場合、objectGUID 属性の値が書き込まれる
      • フェデレーションの場合は UserPrincipalName 属性とともに ImmutableId を用いてユーザを識別し連携する

      参考: Microsoft Entra Connect: 設計概念

      フェーズ 1 の LDAP 認証連携時に objectGUID 属性値をマッピングしましたね。
      これによって PassLogic ユーザは ImmutableId の情報を持っていることになり、Microsoft Entra とのフェデレーションを構成することができます。

      202405_passlogi2_003

      補足

      LDAP 認証連携時に objectGUID ではなく mS-DS-ConsistencyGuid 属性を指定した場合、PassLogic ユーザインタフェースでの AD 認証時にエラーが発生します。
      おそらく AD 属性値の格納方式の違いにより、PassLogic が値を認識できないためであると考えられます。

      202405_passlogi2_004

      ※ 両者の実質的な値は同じです。Powershell で以下のコマンドを実行して確認できます。

      # AD の属性値をエクスポート
      ldifde `
      -f attributes.txt `
      -d {対象ユーザの distinguishedName} `
      -l objectGUID,mS-DS-ConsistencyGuid

      # Entra ID の ImmutableId を確認
      Connect-MgGraph -Scopes "User.ReadWrite.All"

      Get-MgUser `
      -UserId {対象ユーザの UserPrincipalName} `
      -Select OnPremisesImmutableId `
      | fl OnPremisesImmutableId
      注意

      Entra Connect を使用せずに作成された Entra ID には ImmutableId の値は設定されません。
      この場合は、ImmutableId に手動で値を設定する必要があります。

      参考: ハードマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法

      既存の Entra テナントを用いた Entra Connect については以下をご覧ください。

      参考: Microsoft Entra Connect: 既存のテナントがある場合

      SAML 認証連携

      PassLogic と Microsoft Entra の SAML 認証連携を設定します。


      認証サーバ SAML 設定

      SP 登録 (PassLogic)

      運用管理ガイドに従い、Microsoft Entra の メタデータ を PassLogic サーバへ登録します。

      項目 説明
      No. リスト番号
      プロバイダ 任意のサービス名
      SAML タイプ   「SP initiated SSO」 or 「IdP initiated SSO」
      NameID フォーマット サービスで指定されているフォーマット
      UID タイプ 備考
      ドメイン pltest.***
      Recipient SAML 認証レスポンスの送信先 URL
      Issuer https://{PassLogic サーバの FQDN or IP アドレス}
      Audience SAML 認証レスポンス内の Audience 属性値
      署名アルゴリズム SHA-1 or SHA-256
      注意点
      • UID タイプにて objectGUID を指定します。
      • クラウド版では、PassLogic サーバの URI がエンタープライズ版とは異なります。
      • Microsoft Entra 側は署名アルゴリズム SHA-256 に対応しているため、PassLogic 側でも SHA-256 を指定します。(Microsoft Entra 側は最近まで SHA-1 のみ対応だったはず、、)

      セキュリティを向上させるために SHA-1 アルゴリズムは非推奨です。 SHA-256 などのより安全なアルゴリズムを使用してください。 詳細については、こちらをご覧ください。

      引用: シングルサインオンに SAML 2.0 ID プロバイダー (IdP) を使用する - 署名ブロック要件

      202405_passlogi2_005

      ※ SP のメタデータファイルをアップロードすることで、一部の値を自動的に入力できます。

      証明書および秘密鍵の登録 (PassLogic)

      SAML 認証連携用の証明書および秘密鍵を登録します。

      今回は openssl コマンドで自己署名証明書を作成し使用しました。

      参考: OpenSSL で SSL 自己証明書を発行する手順

      202405_passlogi2_006

      以上で、PassLogic 側の設定は完了です。

      Microsoft Entra フェデレーション設定

      Microsoft 公式ドキュメント に従い、カスタムドメインを Microsoft 365 フェデレーションドメインとして構成します。

      フェデレーションドメインは Powershell を用いて構成するため、Microsoft Graph PowerShell SDK をインストール してください。
      (公式ドキュメントが最近更新され、MSOnline から Microsoft Graph PowerShell SDK に変更されています。)

      MSOL / Azure AD PowerShell のライセンス割り当て関連「以外」のコマンドについて
      ライセンス割り当てに関するコマンド以外(例: Connect-MsolService や Get-AzureADUser など)は、2024 年 3 月 30 日 に廃止が延期されました。

      引用: MSOnline / AzureAD PowerShell から Graph PowerShell SDK への移行について 1_概要

      # Microsoft 365 へ接続
      Connect-MgGraph -Scopes "Domain.ReadWrite.All"

      # 変数定義
      $Domain = "pltest.***"
      $LogOnUrl = "https://{PassLogic サーバの FQDN or IP Address}/ui/idp.php?target={SP登録で登録したプロバイダ}"
      $LogOffUrl = "https://{PassLogic サーバの FQDN or IP Address}/ui/?mode=logout"
      $IssueUri = "https://{PassLogic サーバの FQDN or IP Address}"
      $Protocol = "saml"
      $Cert = "{証明書の文字列}"
      $FederatedIdpMfaBehavior = "enforceMfaByFederatedIdp"

      # フェデレーションドメインの構成
      New-MgDomainFederationConfiguration `
      -DomainId $Domain `
      -IssuerUri $IssueUri `
      -PassiveSignInUri $LogOnUrl `
      -PreferredAuthenticationProtocol $Protocol `
      -SignOutUri $LogOffUrl `
      -SigningCertificate $Cert `
      -FederatedIdpMfaBehavior "enforceMfaByFederatedIdp"
      注意点
      • クラウド版では、PassLogic サーバの URI がエンタープライズ版とは異なります。
      • PreferredAuthenticationProtocol オプションでは "saml" を指定する必要があります。("wsFed" では認証がうまくいきません。)
      • FederatedIdpMfaBehavior オプションを指定しないとエラーが出ます。("enforceMfaByFederatedIdp" である必要はありません。)

      参考: federatedIdpMfaBehavior 値

      202405_passlogi2_007

      以上で Microsoft Entra 側の設定も完了です。

      動作確認

      Microsoft 365 のログインページへアクセスします。
      ユーザ名を入力すると PassLogic の認証画面に遷移します。

      202405_passlogi2_008202405_passlogi2_009202405_passlogi2_010

      PassLogic 認証が成功すると Microsoft 365 のログインページに戻り Microsoft 365 へのログインが完了します。

      以上で、PassLogic と Microsoft 365 の SAML 認証連携が完了しました。

      まとめ

      本記事では、Entra Connect による AD と Entra ID の同期と、SAML 認証連携による PassLogic 認証を介した Microsoft 365 へのログインを実装しました。

      フェーズ 2 の要点は以下です。

      • Entra Connect で sourceAnchor に指定される属性値が Entra ID における ImmutableId となる。
      • フェデレーション構成のために ImmutableId 属性情報を PassLogic ユーザにマッピングする必要がある。
      • Microsoft Entra フェデレーション構成時のコマンドオプションを正しく指定する。

      最後までお読みいただきありがとうございました。 次回の記事をお待ちください。

      次回

      • PassLogic for Windows Desktop による Windows へのログオン
      • Microsoft 365 へのシームレスサインオン
      • PassClip

      引用・参考

      PassLogic Enterprise Edition Ver.5.0.0 運用管理ガイド (PassLogic 製品に同梱)

      PassLogic

      デバイスレス・ワンタイムパスワード

      Office 365 と PassLogic を SAML 連携

      Windows ログオン シームレスサインオン

      Microsoft Entra Connect と Microsoft Entra Connect Health のインストール ロードマップ

      Microsoft Entra Connect: 設計概念

      ハードマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法

      Microsoft Entra Connect: 既存のテナントがある場合

      シングル サインオンに SAML 2.0 ID プロバイダー (IdP) を使用する

      Microsoft Graph PowerShell SDK をインストールする

      MSOnline / AzureAD PowerShell から Graph PowerShell SDK への移行について 1_概要

      federatedIdpMfaBehavior 値