2021/09/09

MANUAL

プリザンター(.NET Framework)にSAML認証機能を追加する

## 1. Web.configを編集する 下記リンクからWeb.configファイルのテンプレートをダウンロードしてご利用ください。 [Web.configテンプレート](https://pleasanter.org/downloads/Webconfig.zip) __sustainsys.saml2__内のセクションは、下記の説明を参考に設定を行ってください。 ### `sustainsys.saml2` このセクションでは、サービスプロバイダ(=プリザンター)側の情報を設定します。 |要素名|設定例|説明| |-|-|-| |entityId|https://sso-pleasanter.com/preasanter/Saml2|サービスプロバイダのEntity ID。 "{ServerName}/Saml2"を指定します。※1| |returnUrl|https://sso-pleasanter.com/pleasanter/Users/SamlLogin|認証成功後に遷移するリダイレクト先。"{ServerName}/Users/SamlLogin" を指定します。※1| - ※1 {ServerName}は環境に応じて置き換えてください。 ### `sustainsys.saml2.identityProviders.add` このセクションでは、IDプロバイダ側の情報を設定します。 |要素名|設定例|説明| |-|-|-| |entityId|https://id-provider.com/saml|IDプロバイダのEntity IDを指定します。| |signOnUrl|https://id-provider.com/saml/login|IDプロバイダのログインURLを指定します。| |allowUnsolicitedAuthnResponse|true|非要請応答を許可します。IdP-Initiatedを利用する場合はtrueを指定します。| |binding|HttpPost|SAMLリクエストをIDプロバイダに送信する際に使用するバインディング。以下の値が設定可能です。 HttpRedirect / HttpPost / Artifact| ### `sustainsys.saml2.identityProviders.add.signingCertificate` このセクションでは、IDプロバイダがメッセージの署名に使用する証明書の情報を設定します。 |要素名|設定例|説明| |-|-|-| |storeName|My|検索する証明書ストア名。設定可能な値は※2を参照| |storeLocation|LocalMachine|検索する証明書ストア。設定可能な値は※3を参照| |findValue|50B459426DE554010B35E9XXXXXXXXXXXXXXXXX|証明書を検索する際の検索値。x509FindTypeで指定したフィールドで検索を行います。設定値については※4を参照| |x509FindType|FindByThumbprint|findValueの値との一致を検索するフィールド。設定可能な値は※5を参照| - ※2 https://docs.microsoft.com/ja-jp/dotnet/api/system.security.cryptography.x509certificates.storename - ※3 https://docs.microsoft.com/ja-jp/dotnet/api/system.security.cryptography.x509certificates.storelocation - ※4 findValueに設定する証明書の検索値(拇印)は以下の手順で確認できます。 1. [Windows]キー+[R]を押下し、ファイル名を指定して実行ダイアログに「certlm.msc」を入力して「OK」 2. 管理コンソールの「個人」-「証明書」から対象の証明書をダブルクリック(または右クリックで「開く」) 3. 証明書情報画面の「詳細」タブ-「拇印」フィールドの「値」に表示される文字列 - ※5 https://docs.microsoft.com/ja-jp/dotnet/api/system.security.cryptography.x509certificates.x509findtype より詳細な情報は、Sustainsys.Saml2のドキュメントを参照してください。 https://saml2.sustainsys.com/en/stable/config-elements/sustainsys-saml2.html ## 2. Authentication.jsonを編集する Authentication.jsonをSAML連携用に構成します。 Authentication.jsonは標準構成で下記ディレクトリに配置されています。 ``` C:¥inetpub¥wwwroot¥pleasanter¥App_Data¥Parameters ``` - 設定例(SAML認証に関連する項目のみ抜粋) ```json { "Provider": "SAML", "SamlParameters": { "Attributes": { "Name": "Name", "UserCode": "UserCode", "Birthday": "Birthday", "Gender": "Gender", "Language": "Language", "TimeZone": "TimeZone", "TenantManager": "TenantManager", "DeptCode": "DeptCode", "Dept": "Dept", "Body": "Body", "MailAddress": "{NameId}" }, "SamlTenantId": 1 } } ``` #### Authentication.json SAML認証項目一覧 |項目名|設定例|説明| |-|-|-| |Provider|"SAML"|"SAML"固定| |SamlParameters.Attributes|(`SamlParameters.Attributes` 項目一覧を参照)|プリザンターのユーザー項目とSAMLレスポンスから取得可能な属性名との対応付けを行います。パラメータの左側(キー)がプリザンターのユーザー項目です。対応するSAMLレスポンスの属性名を右側に記載します。| |SamlParameters.SamlTenantId|1|1固定| ### ユーザー項目の同期について SAML認証でのログインが成功すると、SAMLレスポンスから渡されるユーザーデータを基に、プリザンターのユーザーを作成・更新します。 - SAMLレスポンスのNameID要素に設定されているIDをログインIDとして登録します。 - 未登録のログインIDであった場合、そのログインIDでユーザーが新規に作成されます。 - 登録済みのログインIDであった場合、そのログインIDのユーザー情報が更新されます。 - 同期するユーザー情報はAuthentication.jsonの__SamlParameters.Attributes__ で指定したSAMLレスポンスの属性名で検索します。SAMLレスポンス該当する属性名が存在したのみ、その値をユーザー項目に設定します。 #### `SamlParameters.Attributes` 項目一覧 |ユーザー項目名|既定値|説明| |-|-|-| |Name|"Name"|「名前」に設定する属性名を指定。指定したSAML属性から値が取得できなかった場合、ログインIDが設定されます。| |UserCode|"UserCode"|「ユーザーコード」に設定する属性名を指定します。| |Birthday|"Birthday"|「生年月日」に設定する属性名を指定します。| |Gender|"Gender"|「性別」に設定する属性名を指定します。| |Language|"Language"|「言語」に設定する属性名を指定します。| |TimeZone|"TimeZone"|「タイムゾーン」に設定する属性名を指定します。| |TenantManager|"TenantManager"|「[テナント管理者](/manual/user-management-tenant-manager)」に設定する属性名を指定します。属性値が"true"のの場合にそのユーザーがテナント管理者として登録されます。| |DeptCode|"DeptCode"|「組織コード」に設定する属性名を指定します。ここで取得した組織コードを持つ「[組織](/manual/dept)」がこのユーザーに割り当てられます。該当する「[組織](/manual/dept)」が存在しな買った場合は新しい組織が作成されます。| |Dept|"Dept"|「組織名」に設定する属性名を指定します。「DeptCode」から引き当てた「[組織](/manual/dept)」の組織名を更新します。該当する組織が存在しなかった場合はこの「組織名」で組織が作成されます。| |Body|"Body"|「[説明](/manual/table-management-column-description)」に設定する属性名を指定します。| |MailAddress|"{NameId}"|「メールアドレス」に設定する属性名を指定します。NameID要素がメールアドレスの場合、"{NameId}"と指定することでNameIDの値を「メールアドレス」として登録可能です。| ※ ユーザー項目と同期するSAMLレスポンスの属性名が不明の場合、SAMLログイン時に受け取ったレスポンスデータから確認する方法があります。確認手順は下記のリンク先をご確認ください。 [ SAML認証設定でAuthentication.json に設定するSAMLレスポンスの属性名を確認したい](/manual/faq-saml-response) ## 3. IDプロバイダ側の設定 IDプロバイダ側の設定は、各IDプロバイダのマニュアル等にしたがって設定してください。 IDプロバイダ側で必要と思われるプリザンター側の情報は以下の通りです。 |項目名|値| |-|-| |SPのEntity ID|"{ServerName}/Saml2" ※6| |認証成功後に遷移するリダイレクトURL|"{ServerName}/Users/SamlLogin" ※6| |ACS URL|"{ServerName}/Saml2/Acs"| - ※6 {ServerName}は環境に応じて置き換えて設定してください。(例:https://sso-pleasanter.com/preasanter/Saml2) ## 4. SAMLログインの実行 Web.configとAuthentication.jsonの編集が完了したら、IISを再起動してください。 再起動後、ブラウザからアクセスするとログイン画面にSAML認証用のログインボタンが表示されるようになります。(「SSOログイン」ボタン)このボタンをクリックしてSAML認証の動作確認を行ってください。 ![image](/binaries/e33405b9139b4a82b3dcfbcd172d56ce)
このページをシェアする