OnTime Group Calendarのセキュリティ機能(Tokenの利用)について

Written by OnTime on . Posted in 4.管理者, OnTime API

以降、
OnTime Web クライアントは単にWebもしくはWebクライアントと略します。
OnTime Mobile クライアント(Mobile Calendar)は単にMobileもしくはMobileクライアントと略します。
OnTime Social クライアント(OnTime Social)は単にSocialもしくはSocialクライアントと略します。
OnTime Notes クライアント(Eclipseクライアント)は単にNotesもしくはNotesクライアントと略します。
OnTime サイドバークライアント(TAAG)は単にTAAGもしくはTAAGクライアントと略します。

OnTime アクセス トークンについて

補足:
以下のOnTime Access Tokenに関する情報は、OnTime Web クライアント、Mobile、Social等のようなHTTPベースでOnTimeAPIに接続する際の情報です。またOnTime Notes クライアント、サイドバークライアント(TAAG)もHTTP接続に設定されている場合は関係します。もしOnTime Notes クライアント、サイドバークライアント(TAAG)がネイティブNotes API(NRPC)接続に設定されている場合はOnTime Access Tokenは使用されていません。

ユーザーはOnTime Access Token(以下Tokenと略します)を使用することでのみOnTime Group Calendar API(以下OnTimeAPIと略します)から認証されます。OnTimeAPIとは各種Web、Mobile、Notes等のOnTimeクライアントへデータを提供するサービスAPIの名称です。Tokenは様々な情報を含んでいますが、特に重要なのがユーザーを特定しその有効期間がエンコードされている暗号化文字列トークンであるということです。Tokenを取得するために、ユーザーはIBM Dominoに認証される必要があります。認証方法は企業などの組織が要求する認証、例えば基本認証、LtpaTokenを使用したフォームベース認証、証明書ベース認証などいずれでも構いません。

一度Topenが発行されると、OnTime APIへの要求時に常に使用され、OnTimeAPIとのユーザー特定情報として利用されます。
Tokenは一度発行されると有効期間の期限が来るまで利用出来ます。有効期間はConfigDBのServerSetting文書で1時間単位で設定可能です。
“各要求のアイドル時間”を考慮したServerSetting文書上の有効期間に応じてOnTime APIはそれぞれの要求時に新しいTokenを発行いたします。

補足:
ConfigDBのServerSetting文書のTokenの有効期間の設定は”HTTP Token Timeout”を参照します。

一度OnTimeの各種クライアントがTokenを取得した場合、クライアントによってキャッシュ(MobileとWebの場合はブラウザのcookie上でキャッシュされます)され、それ以降のOnTimeAPIへの要求時に使用されます。これは有効期間の期限が来ていないTokenが存在する限り、IBM Dominoによる認証無しでユーザーはWebとMobileクライアントを使用し続けられます。

このことはまた組織のセキュリティポリシーに合う適切なアイドル時間を設定しなければいけないことも意味します。例えば、アイドルタイムを24時間有効と許可した場合、その時から翌日の同時刻までTokenが有効なので、その期間であればユーザーはIBM Dominoの認証無しでWebとMobileクライアントを再度開くことが可能になります。

TokenはConfigDBから取り消すことが出来ることも覚えておいて下さい。これは、例えユーザーがこれから先1年間有効なTokenを持つことが出来たとしても、管理者は、ユーザーにOnTimeを使用するための再認証を要求するためにTokenを取り消すことが出来ます。これは保安処置です。

Webクライアントがどのようにログインするかについて

ここではOnTime Group Calendar Clientデータベースは”OnTime”フォルダの”OnTimeGCClient.nsf”であるとします。よってWebクライアントを開く際は、”HOSTNAME/ontime/ontimegcclient.nsf/web”にリダイレクトされるとします。

ログインプロセスは以下のように行われます。

  1. ユーザーは”HOSTNAME/ontime/ontimegcclient.nsf/web”を開こうとします。
  2. プログラムコードは、ブラウザから開いた場合はブラウザのcookieの中に、Notesのワークスペースのアイコンから起動した場合は生成するURLに、それぞれ有効なTokenが存在しているか確認します。もし存在した場合はそのTokenを使用してアクセスしてみます。
  3. もし期限切れなどでTokenが機能しない場合はブラウザのcookieはクリアされ、ログインプロセスを再度開始します。
    1. もしTokenが見つからない場合は、Tokenを取得するAPIコールが実行されます。その際ユーザーがIBM Dominoで認証されていない場合はOnTimeAPIはクライアントにそれを伝え、ユーザーはIBM Dominoログインページにリダイレクトされます。OnTimeはこのプロセスにセッション認証しかサポートしていません。なので必要とする場合、Dominoの設定でフォームベースのセッション認証の設定をして下さい。
    2. 取得することが出来たTokenはブラウザのcookieに保存し、ログインプロセスの再試みに利用されます。

Mobileクライアントがどのようにログインするかについて

Webと同じくOnTime Group Calendar Clientデータベースは”OnTime”フォルダの”OnTimeGCClient.nsf”であるとします。よってMobileクライアントを開く際は、”HOSTNAME/ontime/ontimegcclient.nsf/mobile”にリダイレクトされるとします。

ログインプロセスは、要求されるURL以外はWebと同じ手順です。

NotesとTAAGクライアントがどのようにログインするかについて

NotesとTAAGクライアントが起動される時、これらクライアントはOnTimeAPIにどのように接続するのかが保存されている接続情報を取得する必要があります。実は.これらの情報はユーザーのメールDBのプロファイル文書に保存されています。これらの情報はOnTimeタスクの同期処理(Sync)がメールDBから予定等のエントリを読み取る際に常に更新します。

注意:
複数のOnTime Group Calendar環境をお持ちの場合、一つのメールDBには一つのOnTime環境からのみこのプロファイル文書に書き込みされるよう設定される必要があります。これらはServerSetting文書で設定します。

ログインプロセスは以下のように行われます。

  1. ユーザーがOnTimeクライアントを起動するためにアイコンをクリックします。
  2. 接続情報がキャッシュされていれば、OnTimeAPIへの接続に利用されます。もし管理者による取り消しなどでTokenが有効でない場合は保存されていた接続情報はクリアされ、ログインプロセスを再度開始します。
  3. メールDBへのアクセスには個人アドレス帳のロケーション文書に記載されているサーバー名やメールファイル名の情報を利用します。もしキーボードからCtrl+M(Macの場合はCmd-M)を押しても新規メール文書が開かない場合はこの設定が正しくないと考えて下さい。
  4. プロファイル文書を見つけることが出来ればOnTimeAPIの接続情報を読み込みます。
    1. OnTimeクライアントがHTTPで接続するように設定されている場合は、ユーザーを確認し特定するためにデジタル証明を使うネイティブなIBM Notes APIを利用してTokenを取得します。一度Tokenを取得すると、OnTimeAPIはユーザー情報を利用したTokenによるHTTPベースでの接続となります。
    2. OnTimeクライアントがネイティブなNotes APIを使用するように設定されている場合、ユーザーを確認し特定するためにデジタル証明を使うネイティブなIBM Notes APIを利用して接続します。

ユーザーを確認し特定するためにデジタル証明を使うネイティブなIBM Notes APIを利用する場合、OnTimeクライアントからもOnTimeAPIからもNotesの暗号化プロセスを利用出来ます。

シングルサインオン(SSO)の場合

顧客はよくOnTime Group Calendarとそのクライアントの接続にシングルサインオンのソリューションを提供したいと考えます。適切なソリューションの選択は運用しているセキュリティ基盤に依存します。しかし時としてユーザーは幾つかの他のシステムで認証され、そのユーザー認証はIBM Dominoにマップされていないかもしれません。それはユーザーが他のシステムで認証された場合、ユーザー証明書がIBM Dominoで再利用出来ないことを意味します。そのような場合、以下に説明するような幾つかの解決する方法があります。

シンプルなアプローチ

Tokenのアイドル時間の設定を長くして、OnTime Group Calendar独自のセキュリティを継続して利用する方法です。厳密に言えばこれはSSOの提供ではなく、Tokenのアイドル期間の設定を長くすることでToken取得時に長い有効期間をもったTokenを一度だけ認証時に要求する方法です。このオプションは設定だけですぐに利用可能です。

APIを利用したアプローチ

オプション販売されているOnTime Open APIを購入しているならば、ユーザーにTokenを発行するためにOnTimeAPIを利用出来ます。OpenAPIを利用すると、例えばMicrosoft SharepointやCRMシステムやMDMプロバイダのような他のシステムによって検証された証明書を使用してシステム管理者は他のユーザーの代わりにTokenを取得しOnTimeにアクセスする方法を提供出来ます。

私たちはお客様のご要望から、IBM Dominoプラットフォーム以外からIBM Domino上のOnTimeにSSOを提供するソリューションを以前開発したことがあります。

例えば、Windows Integrated Authentication(IWA)を利用してユーザーは自動的にイントラネットに認証されるようなMicrosoftのテクノロジー基盤のイントラネットをお持ちの顧客がいらっしゃいます。そのお客様の要望は、ユーザーがIBM Dominoの認証無しにMicrosoftのイントラネットでの認証だけでOnTime Webクライアントを開くことが出来ることでした。

私たちは、OnTime Open API技術を利用して、そのイントラネットでユーザーがログインしている場合そのユーザーのに代わってその検証されたユーザー名を利用してTokenを取得する方法で解決しました。一旦イントラネットサーバーがTokenを取得出来たら、後は正しいブラウザのcookieにセットするだけでパズルは完成します。ユーザーがOnTime Webクライアントにアクセスしようとするとブラウザは取得したTokenを自動的に提供し、シングルサインオンのように再認証無しでOnTimeにアクセスすることが可能になりました。

SPNEGO / KERBEROS(フォームベースのセッション認証を使用出来ない場合)

IBM DominoとSPNEGOを利用する顧客にとって、OnTimeGCClient.nsfのデフォルトのACL設定は問題を引き起こすことがあります。
これはClientDBがAnonymousに対して接続を許可しているため、OSが認証ハンドシェイクを始めるのに必要となるHTTP401レスポンスコードを返さないのが原因です。
これを解決するためにはClientDBは認証されるためユーザーに要求する特別なページを持っています。”Web”というページを使用する代わりにシンプルに”WebSSO”を使うだけです。
例えばOnTime Group Calendar Clientデータベースは”OnTime”フォルダの”OnTimeGCClient.nsf”であるとします。その場合Webクライアントを開く際は、”HOSTNAME/ontime/ontimegcclient.nsf/web”にリダイレクトされるとします。もしSPNEGOを使用している場合、単純に”/web”の部分を”/websso”に置き換えて”HOSTNAME/ontime/ontimegcclient.nsf/websso”に接続するだけです。その他の設定は必要としません。

注意:
この機能を実現するためにマニュアルに沿ってACLを正しく設定することは大変重要です。