Skype for Business Online の認証フローについて

こんばんは、Sfb サポートのワトソンです。

今日は簡単に Skype for Business Onlineの TLS-DSK 認証についてのお話しです。

Lync Sever 2010 から存在する証明書認証方式を利用してサインインが行われます。

大まかには以下 Online 上のサービスが認証フローに関わります

A. Skype for Business Online 上の サーバー

B. ウエブチケットサービスのサーバー (Skype for Business Online上のフロントエンドで起動)

C. 証明書を発行し、ユーザーに割り当てるプロビジョニングサービス (Skype for Business Online 上のフロントエンドサーバーで起動)
D.フェデレーション認証サーバー (AD FS)

上記の各サービスの FQDN の検知方法にかんしては、以下のいずれかの方法になります。

A. https://lyncdiscover.contoso.com/?sipuri=user@contoso.com に Autodiscover を

行い接続点を検知

▼ 自動構成の場合はこの接続方法が優先されます。

B. sip.contoso.com を解決した結果 sipdir.online.lync.com に接続し検知。.

各サービスと Lync クライアントの認証の流れは以下のようになります。

各サービスにアクセスを行うにあたり利用される FQDN は以下のフォーマットの URL になります。

■ ウエブチケットサービス URL

https://webdir0f.online.lync.com/WebTicket/WebTicketService.svc

■ 証明書プロビジョニングサービス

https://webpoolxxx.infra.lync.com:443/CertProv/CertProvisioningService.svc

 

AD FS が利用されていない環境の場合、入力されたパスワードを利用し、login.microsoftonline.com へ認証リクエストが送信され、セキュリテイートークンが発行された後、トークンを基に Skype for Business Online より、ウエブチケットを取得し、その後、証明書プロビジョニングサービスより、汎用証明書を取得し認証を完了させます。

 

AD FS サーバーが利用されている場合には、Windows 統合認証または、パスワード認証を利用し、AD FS サーバーからセキュリテイートークンを取得し、その後、login.microsoftonline.com とそのトークンを元に認証を完了させ、上記と同様に Skype for Business Online のサーバーよりウエブチケットを取得し、チケットと引き換えに汎用証明書を取得いたします。

多くのお客様で AD FS によるフェデレーション認証を実施しておりますが、
AD FS サーバーがある場合のフローについてサンプルとして以下に記載します。

レガシー認証の場合
=========================
*Sfb Online PS で、Get-CsOAuthConfiguration |select ClientAdalAuthOverride が Disallowed の場合)

  1. lyncdiscover.domain にアクセスをし、証明書サービスの URL を取得
  2. https://webxxxx.onlinelync.com/CertProv/CertProvisioningService.svc/mex にアクセスを行い、WebTicket サービスの URL を取得
  3. https://webxxxx.onlinelync.com/WebTicket/WebTicketService.svc/mex にアクセスを行い、認証のメタデーターを取得
  4. https://login.microsoftonline.com/getuserrealm.srf にアクセスをし、ユーザーがフェデレーション認証が有効である事を検知し、このタイミングで ad fs サーバーの URL を知る。
  5. https://adfsサーバーのurl/adfs/services/trust/mex に対してアクセスを行い、メタデーターの取得を行う。(メタデーターには Windows 統合認証に必要な URL の情報も含まれる)
  6. window 統合認証が有効な場合は、https://adfsサーバーのurl/adfs/services/trust/windowstransport の URL に認証リクエストを送信し、セキュリテイートークンを取得
    Mex リクエストが失敗した場合、または WorkGroup 環境の場合、または、 Windows 統合認証ができない場合は、入力したパスワードを元に、https://adfsサーバーのurl/adfs/services/trust/usernamemixed に認証リクエストが送信されセキュリテイートークンを取得
  7. セキュリテイートークンを利用し、login.microsoftonline.com/rst2.srf と通信をし、Azure AD よりトークン取得
  8. https://webxxxx.onlinelync.com/WebTicket/WebTicketAdvancedService.svc/WsFed\_bearer の URL に対して取得したトークンを利用し、ウエブチケットを取得
  9. https://webxxxx.onlinelync.com/CertProv/CertProvisioningService.svc/WebTicket\_Proof の URl に ウエブチケットを送信し証明書を取得し認証が完了。

モダン認証が有効なテナントの場合、上記とは少々異なるシーケンスとなりますが、大まかには例えばステップ 8 の WsFed_bearer (WS フェデレーションの認証トークンを持つ) URL の代わりに、https://webxxxx.onlinelync.com/WebTicket/WebTicketAdvancedService.svc/OAuth に対してステップ  7 で取得される、アクセストークンをが送信されウエブチケットの取得が行われます。

また、ステップ 5 では、/windowstransport や usernamemixed のエンドポイントではなく、ブラウザー認証と同様に https://adfsサーバーのurl/adfs/ls/ のエンドポイントよりトークン取得を行います。

レガシー認証をこれまで利用しており、クレームルールでユーザーエージェントを基に、トークンの発行を制御していたお客様はモダン認証が有効にした場合にはアプリケーションの認証制御を AD FS で実施する事はできません。
これは、モダン認証の場合、トークン取得を行う際のユーザーエージェントが ADAL のライブリーのものとなり、すべてのアプリで共通となるためです。
認証の制御を行う場合は Azure AD の Conditional Access や Intune の利用をご検討下さい。

Lync On-premise ではデフォルトで 180 日の証明書が利用されますが、

Skype for Business Online の場合は 8 時間の有効期限をもつ証明書が配布されます。