memoQ serverにOIDCベースのシングルサインオンを設定する - パート1 - 会社のシステム管理者向け
memoQ serverにはさまざまな種類のシングルサインオンがあります:このドキュメントでは、OIDCベースのSSOについて説明します。フレーズ「シングルサインオン」および「SSO」は、OIDCベースのソリューションを指します。「Windows SSO」や「Windows AD SSO」という言葉は、memoQ serverの旧来のWindows Active DirectoryベースのSSOソリューションを指します。バージョン9.7より、Windows SSOユーザーは、通常のmemoQ serverユーザーと同様にOIDC SSOに切り替えることができます。
必要なもの
構成を開始する前に、次の情報を収集してください。これらは、プロセスの各段階で必要となります。
- アイデンティティプロバイダー (またはIDP) 用のsettings.jsonファイル (%PROGRAMFILES%\Kilgray\MemoQ Server\Oidc\examplesフォルダ内にあります)
- Authentication Managerが使用する証明書のSubject値。商用 (自己署名ではない) 証明書である必要があります。memoQ serverが使用しているものでも構いません。サーバーマシンで、コンピューター証明書の管理アプリケーションを開きます (または、certlm.mscコマンドを実行します)。Certificates - Local Computer/Personal/Certificateフォルダの中から証明書を探します。証明書をダブルクリックし、Detailsタブをクリックして、Subjectフィールドのホスト名を書き留めます (例:*.mycompany.com)。
- memoQ serverデータベースの接続文字列:%PROGRAMDATA%\MemoQ Serverフォルダを開き、テキストエディタでConfiguration.xmlを開きます。<SQLConnectionString>タグ間の値をコピーします。
- memoQのAuthentication Managerが使用するポート。ファイアウォールでこのポートを開く必要があります。デフォルトでは5001です。
- IDPの名前 - これは、memoQ serverデータベース内のIDPの名前であり、memoQのユーザー管理ウィンドウ内のアカウント起源情報の一部です。
- 表示名 - ログインページの [Sign in with IDP] ボタンの上のテキスト。
セットアップ中に問題が発生した場合は、memoQサポートに連絡してください。
セットアップと構成
Authentication ManagerはmemoQ Serverサービスの隣にある独立したサービスです。memoQ serverと一緒にインストールされますが、動作させるためには構成する必要があります (memoQ serverをIDプロバイダーに登録した後)。
memoQ serverをアイデンティティプロバイダーサービスのクライアントとして登録する場合は、コールバックURLを設定する必要があります。これは、IDPがAuthentication Managerにアクセスできる場所です。コールバックURLは次のようになります:
Authentication Managerでは、IDPとの通信用にポート (3) が必要です。デフォルトでは、これはポート5001です。このポートは、インバウンドおよびアウトバウンド通信用に開いている必要があります。必要に応じて、アプリケーション設定ファイルで別のポートを設定できます。
コールバックURLの最後の部分 (4) は必要に応じて選択できます、しかし:
- 「login」、「logout」、または「auth」であってはなりません。
- 複数のIDプロバイダーに登録する場合、この部分は各プロバイダで一意である必要があります。
memoQ serverをIDプロバイダーのクライアントとして登録すると、memoQ serverはClientIDとClientSecretを受信します。これらは、Authentication Managerを設定する際に必要となります。
- Implicit Grantオプション (アクセストークンまたはIDトークン) は必要ありません。
- User.Readタイプの委譲された権限が必要です。
- デフォルトのログアウトURLとして/logoutを設定する必要があります。
ファイアウォールが正しく設定されていることを確認します:IDプロバイダーによっては、会社のファイアウォールでいくつかのポートを開く必要があります。詳細については、IDプロバイダーのドキュメントを検索してください。
信頼できる証明機関によって発行された証明書を使用します。これは、memoQ serverが使用する証明書と同じである場合があります。
- ネットワーク管理者またはセキュリティ担当者は、サーバマシンに証明書をインストールします。
- appsettings.User.jsonファイルを編集します。Kestrel.Certificates.Default.SubjectフィールドにSubjectの値をを入力します。
Authentication Managerは、次のシステム構成データを知る必要があります:
- SSL証明書へのパス
- データベースとの通信の詳細
- 応答する必要があるホスト名
これらを%PROGRAMDATA%\MemoQ Server\Oidc Backend\appsettings.User.jsonファイルで設定します。
ログの詳細が別のファイルに保存されるようになりました:%PROGRAMFILES%\Kilgray\MemoQ Server\Oidc\appsettings.json。
SSL証明書へのパス
実稼働環境では、証明書は証明書ストアに格納されている必要があります。appsettings.User.jsonのKestrelキーのデフォルト設定は、この方法で設定されます。サブジェクト(S)キーの値のみを変更します:localhostを前に書き留めた証明書のサブジェクトに置き換えます。他の値は変更しないでください。
セットアッププロセスの後半で、Authentication Managerのサービス・アカウントにこの証明書に対する読み取りアクセスを付与する必要があります。
Authentication Managerの呼び出しを許可するホスト
この例では、「*」は任意のホスト名を表します。アクセスを制限する場合は、AllowedHostsキーの値を編集します:1つ以上のドメイン (たとえば、「*.company.com」)または特定のホスト名 (たとえば、「machine1.company.com」) を、セミコロン (;) で区切って入力します。それ以外の場合は、AllowedHosts値を変更しないでください。
ポート番号をデフォルトから変更した場合は、urlsキーのコロン (:) の後の部分を変更します:
それ以外の場合は、urls値を変更しないでください。
データベースとの通信
Authentication ManagerはmemoQ serverデータベースと通信します。memoQ serverデータベースの接続文字列をConnectionStrings.OidcLoginDataキーの値として入力します:
単純にコピー&ペーストしないでください:JSONファイルでは、バックスラッシュ文字をエスケープする必要があります。つまり、「\」を「\\」に変更します。
ロギング
%PROGRAMFILES%\Kilgray\MemoQ Server\Oidc\appsettings.jsonファイルでは、ロギングの詳細を定義しています。
Serilog.WriteToで"Name": "File"キーを見つけます。Argsでのキーは、重要なパラメータを定義しています。
path:デフォルトでは、ログは%PROGRAMDATA%\MemoQ Server\Oidc Backend\LogFiles\log-.txtファイルに保存されます。
rollingInterval、rollOnFileSizeLimit、fileSizeLimitBytes:ログは毎日のファイルに書き込まれますが (これは変更しないでください)、ファイルサイズが制限 (デフォルトでは100MB) に達すると、その日の2番目のファイルが作成されます。
retainedFileCountLimit:デフォルトでは、最後の31個のログファイルがサーバーに保存されます。
デフォルトでは、ログレベルはInformationです。詳細情報が必要な場合は、Serilog.MinimumLevel.Defaultキーの値をDebugまたはVerboseに変更します。
Verboseには、名前やシークレットも含めてすべての情報が一覧表示されます。実際に必要な場合にのみ使用し、組織のデータ保護ポリシーに準拠している場合にのみ使用してください。
これらの設定は永続的なものではありません:memoQ serverをアップデートすると、%PROGRAMFILES%の下のフォルダ全体が上書きされます。これは、appsettings.jsonのすべての設定がデフォルト値に戻ることを意味します。本当に必要な場合を除き、変更しないことをお勧めします。
Authentication Manager用に安全な作業フォルダを設定する (オプション)
.NET Frameworkの既知の問題により、Authentication ManagerとOIDC構成ツールのプログラムファイルが、アンチウイルスアプリなどのサードパーティ製ソフトウェアによって削除される可能性がありました。これを回避するには:マシンまたはシステムスコープで、DOTNET_BUNDLE_EXTRACT_BASE_DIRという名前の環境変数を作成します。値を%PROGRAMDATA%\Temp\.netに設定します。
これは、memoQ serverマシン上の他の.NETベースのソフトウェアに影響する可能性があります。この手順の前に、サーバー上に自己解凍型の単一ファイル実行ファイルを使用するプログラムがないかどうかを確認します。ある場合は、変更によって中断される可能性があるかどうかを確認します。
このステップは後で必要ありません:memoQが.NET 5に更新されると、この問題は自動的に解決されます。
IDプロバイダーのパラメータを設定します
注意:2020年12月現在、memoQはAzure AD、Google、Microsoft、Okta (標準とカスタムの両方) インスタンスをサポートしています。お客様の会社が別のOIDCベースのIDプロバイダーサービスを使用している場合は、必要なリソースを提供できるビジネスサービス部門に連絡してください。
会社のIDプロバイダーの種類に応じた設定ファイル (AzureAD.settings.json、Google.settings.json、Microsoft.settings.json、OktaCustom.settings.json、OktaOrg.settings.json、OneLogin.settings.json) を選択し、そのファイルを%PROGRAMFILES%\Kilgray\MemoQ Server\Oidcフォルダに入れてください。テキストエディタでファイルを開き、値を追加します:
パラメータ | 説明 |
---|---|
Template | パラメータ値を使用して入力するテンプレートファイル。 変更しないでください! |
Parameters | 以下の各サブキーの説明を参照してください。 |
Name | memoQ serverデータベース内のIDプロバイダーの名前、oidc.IDProviderSettingsテーブル内のキー値。 必要に応じて変更してください。 |
DisplayName | ログインページに表示されるIDプロバイダーのボタン上のテキスト。 必要に応じて変更してください。 |
ButtonIconUrl | ログインページに表示されるIDプロバイダーのアイコンのURL。デフォルトのアイコンURLがありますが、別のアイコンを設定することもできます。 |
ButtonBackgroundColor | ログインページに表示されるIDプロバイダーのボタンの色。デフォルトの色がありますが、別のアイコンを設定することもできます。 |
ButtonTextColor | ログインページに表示されるIDプロバイダーのボタンのテキスト色。デフォルトの色がありますが、別のアイコンを設定することもできます。 |
ClientId | memoQ server用にIDプロバイダーが生成したクライアントID。 デフォルト値を変更する必要があります。 |
ClientSecret |
memoQ serverをこのIDプロバイダーに登録するときに受信したクライアントシークレットまたはシークレットキー。 この暗号化されていないjsonファイルにクライアントシークレットを保存することは、絶対に必要な場合を除いて避けてください。この値は空欄のままにしておき、設定ツールでIDプロバイダーを設定する際にのみ、クライアントシークレットを入力します。 |
CallbackPath |
ID プロバイダーに登録したコールバック URLの最後の部分です。 |
Scope | Authentication ManagerがIDプロバイダーに送信するOIDCスコープ。デフォルトでは、すべての標準スコープ値が含まれます。必要に応じて値を削除できますが、スコープにopenid値が含まれている必要があります。それ以外の場合、シングルサインオンは機能しません。 |
パラメータ | 説明 |
---|---|
Tenant | あなたのMicrosoft Azureのテナント。デフォルト値を変更する必要があります。 |
OktaDomain | あなたのOktaドメイン。デフォルト値を変更する必要があります。 |
AuthServerId | Okta Authorization serverのID。デフォルト値を変更する必要があります。 |
OktaOrg | あなたのOkta組織のベースURL (http://なし)。デフォルト値を変更する必要があります。 |
OIDC構成ツールは、次の目的で設計されたコマンドラインアプリケーションです:
- アイデンティティプロバイダー接続を登録する
- 接続の詳細を構成する
- Authentication ManagerをWindowsサービスとしてインストールする
- サービスを開始する
%PROGRAMFILES%\Kilgray\MemoQ Server\Oidcフォルダ内にあります。このフォルダーで管理者権限を持つコマンドプロンプトまたはPowerShellウィンドウを開きます。
構成ツールのAddIdProviderコマンドを使用して、IDプロバイダー構成を追加します。
MemoQ.Security.Oidc.Backend.ConfigTool.exe AddIdProvider
-f [<absolute_or_relative_path>\]<your_settings_file>.json
IDプロバイダーの新しいアイコンを設定する場合は、-iパラメーターを使用して (コンピュータ上で) そのパスを追加します。
例:
MemoQ.Security.Oidc.Backend.ConfigTool.exe AddIdProvider -f AzureAD.settings.json
MemoQ.Security.Oidc.Backend.ConfigTool.exe AddIdProvider -f C:\SSO-Ingredients\OktaOrg.settings.json -i C:\SSO-Ingredients\OktaIcon.png
IDPから受け取ったクライアントシークレットを設定する
クライアントシークレットはパスワードなので、設定ファイルに保存することは安全ではありません。構成ツールを使用して手動で設定します:
MemoQ.Security.Oidc.Backend.ConfigTool.exe SetClientSecret -s <client_secret> -n Okta
パラメータ | パラメータの名前 | 必須かどうか | 説明 |
---|---|---|---|
-n |
Name |
必須 |
設定ファイルの「Name」と同じ値を使用します。 |
-s |
ClientSecret |
必須 |
memoQ serverをIDプロバイダーサービスに登録するときに受信したクライアントシークレット値。 |
クライアントシークレットは、ハッシュ形式でデータベースに格納されます。
Authentication ManagerのベースURLの設定
これは、構成ツールのSetBackendBaseUrlコマンドを使用して行います。必須オプション:URL用として-u。
MemoQ.Security.Oidc.Backend.ConfigTool.exe SetBackendBaseUrl -u <auth_man_base_url>
ベースURLは次のように構成されます:
例:
MemoQ.Security.Oidc.Backend.ConfigTool.exe SetBackendBaseUrl -u https://memoqserver.mycompany.com:5001
memoQWebのベースURLの設定
この情報は、memoQWebからのコールを受け入れるURLからAuthentication Managerに通知するため、重要です。このURLからのログイン試行は、memoQWebログインとして処理されます。
memoQWebへのログインに使用するものと同じURLを設定します。サーバーマネージャ > 構成とログ > Web アドレスタブにあります。
構成ツールのSetMemoQWebBaseUrlsコマンドを使用します。必須オプション:URL用として-u。
MemoQ.Security.Oidc.Backend.ConfigTool.exe SetMemoQWebBaseUrls -u <memoqweb_base_url>
例:
MemoQ.Security.Oidc.Backend.ConfigTool.exe SetMemoQWebBaseUrls -u https://memoqserver.mycompany.com/memoqweb
WindowsでのAuthentication Managerサービスのインストール
これは、構成ツールのInstallServiceコマンドを使用して行います。
注意:サービスを実行するために選択するアカウントには、memoQ serverデータベースに対する読取りおよび書込み権限と、appsettingsファイルで設定した証明書に対する読取り権限が必要です。これはすべてのアカウントタイプに当てはまります (LocalSystem、NetworkService、VirtualService、またはServiceUser)。
次のことをお勧めします:
- ドメインにmemoQ serverを持つこと
- そのドメイン内では、すべてのmemoQサービスを実行する専用のユーザーアカウントを持つこと (memoQ server serviceとMemoQ OIDC Backend Service)
- この専用ユーザーアカウントは証明書にアクセスできる必要があります。
例:
MemoQ.Security.Oidc.Backend.ConfigTool.exe InstallService -t VirtualService
MemoQ.Security.Oidc.Backend.ConfigTool.exe InstallService -t ServiceUser -a AuthMan -p L0ngEn0ughIsStr0ngEn0ugh -s true
Authentication Managerサービスに証明書の読み取りアクセスを許可する
- memoQ serverマシンで、certlm.mscコマンドを実行します。
- コンピュータ証明書の管理ウィンドウのCertificates - Local Computer/Personal/Certificateフォルダで証明書を探します。
- 証明書を右クリックします。メニューからAll Tasks > Manage Private Keysを選択します。
- <証明書> 秘密キーのアクセス許可ウィンドウで、追加ボタンをクリックします。
- ユーザーの選択...ウィンドウで、Authentication Managerサービスの名前を入力し (必要に応じて、services.mscを実行してすべてのサービスのリストを表示します)、Check namesボタンをクリックします。
- Windowsがサービス名を認識したら、OKボタンをクリックします。
- <証明書> 秘密キーのアクセス許可ウィンドウで、サービスの名前をクリックします。サービスに読み取り権限しかないことを確認し、OKボタンをクリックします。
ソフトウェアコンポーネントの再起動
この時点で、次を再起動する必要があります:
- memoQ serverサービス
- memoQWebを実行するIISアプリケーションプール
-
Authentication Managerサービス (WindowsのサービスコンソールではMemoQ OIDC Backend Service)
サーバーマシンの再起動後に手動でサービスを開始する必要がないように、このサービスが自動に設定されていることを確認してください。
これで、memoQ serverにAuthentication Managerが構成されました。サーバーは以下を受け入れます:
- SSOログイン:ユーザーはIDプロバイダーサービスを選択し、そのIDプロバイダーにあるユーザー名とパスワードを使用してサインインします。
- 従来のSSOログイン:ユーザーは、会社のWindows Active Directoryにあるユーザー名とパスワードを使ってサインインします。OIDCの観点からすると、これらのユーザーはローカルログインと同様に動作しますし、memoQ serverバージョン9.7からは、OIDCベースのSSOに変更することができます。
- ローカルログイン:IDプロバイダーのクレデンシャルもWindows ADアカウントも持っていないユーザーは、memoQのユーザー名とパスワードを引き続き使用できます。
memoQ管理ユーザーに対して、memoQ server上でユーザーの作成または更新を開始するよう指示できるようになりました (この文書のパート2を参照)。
memoQ serverで複数のIDプロバイダーを使用する
memoQ serverは、複数のIDプロバイダーシステムからユーザ認証を受け入れることができます。例えば、企業の2つの部門が異なるAzure ADテナントを使用したり、社内の従業員がOktaを使用したり、外部のベンダー (フリーランス翻訳者) がGoogleまたはMicrosoftの個人アカウントでサインインできるようにすることができます。
さらに、memoQ serverのクレデンシャルを使用してログインできる「従来」のユーザーを設定できます。
ユーザーごとに複数のIDPシステムが存在しない場合:1人のmemoQユーザーは、1つのIDPシステムにしか接続できません (「従来」のmemoQログインを使用している場合は接続できません)。
バージョンの互換性
OpenID接続ベースのSSOは、バージョン9.5以降でのみ機能します。memoQ serverの以前のバージョンでは、OIDCオリジンのユーザを認識および管理することはできません。
以前のバージョンへのロールバックはありません:memoQ serverにOIDCベースのSSOをインストールする場合、構成ツールはmemoQ serverデータベースに新しいテーブルを追加します。つまり、ロールバックを使用して以前のバージョンに戻すことはできません。
詳細情報
こちらより、この文書のパート2 (memoQ管理者向け) をご覧ください。
こちらでトラブルシューティングのヒント、一般的なユーザー認証スキーマ、およびテスト環境に関するいくつかのヒントを参照してください。