2021/09/26

MANUAL

プリザンターでSAML認証を利用する

## 概要 SAML認証を利用するための設定について記載します。 ## 対応バージョン 1. プリザンター 1.2.6.0 以降 ## 1. Authentication.jsonを編集する Authentication.jsonをSAML連携用に構成します。 Authentication.jsonは標準構成で下記ディレクトリに配置されています。 ``` C:¥web¥pleasanter¥Implem.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, "SPOptions": { "EntityId": "https://sso-pleasanter.com/preasanter/Saml2", "ReturnUrl": "https://sso-pleasanter.com/pleasanter/Users/SamlLogin", "AuthenticateRequestSigningBehavior": "IfIdpWantAuthnRequestsSigned", "OutboundSigningAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", "MinIncomingSigningAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", "IgnoreMissingInResponseTo": false, "PublicOrigin": null, "ServiceCertificates": [] }, "IdentityProviders": [ { "EntityId": "https://id-provider.com/saml", "SignOnUrl": "https://id-provider.com/saml/login", "LogoutUrl": null, "AllowUnsolicitedAuthnResponse": true, "Binding": "HttpPost", "WantAuthnRequestsSigned": false, "DisableOutboundLogoutRequests": true, "LoadMetadata": false, "MetadataLocation": null, "SigningCertificate": { "StoreName": "My", "StoreLocation": "LocalMachine", "X509FindType": "FindByThumbprint", "FindValue": "50B459426DE554010B35E9XXXXXXXXXXXXXXXXX" } } ] } } ``` #### 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) ### `SamlParameters.SPOptions` このセクションでは、サービスプロバイダ(=プリザンター)側の情報を設定します。 |要素名|設定例|説明| |-|-|-| |EntityId|https://sso-pleasanter.com/preasanter/Saml2|サービスプロバイダのEntity ID。 "{ServerName}/Saml2"を指定します。※1| |ReturnUrl|https://sso-pleasanter.com/pleasanter/Users/SamlLogin|認証成功後に遷移するリダイレクト先。"{ServerName}/Users/SamlLogin" を指定します。※1| |AuthenticateRequestSigningBehavior|IfIdpWantAuthnRequestsSigned|| |OutboundSigningAlgorithm|http://www.w3.org/2001/04/xmldsig-more#rsa-sha256|| |MinIncomingSigningAlgorithm|http://www.w3.org/2001/04/xmldsig-more#rsa-sha256|| |IgnoreMissingInResponseTo|false|| |PublicOrigin|null|| |ServiceCertificates|[]|| - ※1 {ServerName}は環境に応じて置き換えてください。 ### `SamlParameters.IdentityProviders` このセクションでは、IDプロバイダ側の情報を設定します。 |要素名|設定例|説明| |-|-|-| |EntityId|https://id-provider.com/saml|IDプロバイダのEntity IDを指定します。| |SignOnUrl|https://id-provider.com/saml/login|IDプロバイダのログインURLを指定します。| |LogoutUrl|null| |AllowUnsolicitedAuthnResponse|true|非要請応答を許可します。IdP-Initiatedを利用する場合はtrueを指定します。| |Binding|HttpPost|SAMLリクエストをIDプロバイダに送信する際に使用するバインディング。以下の値が設定可能です。 HttpRedirect / HttpPost / Artifact| |WantAuthnRequestsSigned|false| |DisableOutboundLogoutRequests|true| |LoadMetadata|false| |MetadataLocation|null| ### `SamlParameters.IdentityProviders.SigningCertificate` このセクションでは、IDプロバイダがメッセージの署名に使用する証明書の情報を設定します。 |要素名|設定例|説明| |-|-|-| |StoreName|My|検索する証明書ストア名。設定可能な値は※2を参照| |StoreLocation|LocalMachine|検索する証明書ストア。設定可能な値は※3を参照| |X509FindType|FindByThumbprint|findValueの値との一致を検索するフィールド。設定可能な値は※4を参照| |FindValue|50B459426DE554010B35E9XXXXXXXXXXXXXXXXX|証明書を検索する際の検索値。x509FindTypeで指定したフィールドで検索を行います。設定値については※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 https://docs.microsoft.com/ja-jp/dotnet/api/system.security.cryptography.x509certificates.x509findtype - ※5 FindValueに設定する証明書の検索値(拇印)は以下の手順で確認できます。 1. [Windows]キー+[R]を押下し、ファイル名を指定して実行ダイアログに「certlm.msc」を入力して「OK」 2. 管理コンソールの「個人」-「証明書」から対象の証明書をダブルクリック(または右クリックで「開く」) 3. 証明書情報画面の「詳細」タブ-「拇印」フィールドの「値」に表示される文字列 より詳細な情報は、Sustainsys.Saml2のドキュメントを参照してください。 https://saml2.sustainsys.com/en/stable/config-elements/sustainsys-saml2.html ## 2. 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) ## 3. SAMLログインの実行 Authentication.jsonの編集が完了したら、IISを再起動してください。 再起動後、ブラウザからアクセスするとログイン画面にSAML認証用のログインボタンが表示されるようになります。(「SSOログイン」ボタン)このボタンをクリックしてSAML認証の動作確認を行ってください。 ![image](/binaries/e33405b9139b4a82b3dcfbcd172d56ce)
このページをシェアする