PassLogicのSAML2.0連携機能で「プリザンター」にログイン
パスロジが提供する企業・団体向けの認証システム「PassLogic(パスロジック)」は、業務システムへの認証を通常のID&パスワード認証から、デバイスレス・ワンタイムパスワード認証や、TOTP型のワンタイムパスワード認証に置き換えて認証を強化する純国産セキュリティソフトウェアです。
プリザンターは、株式会社インプリムが提供するオープンソースの純国産Webデータベースソフトウェアです。顧客管理・生産管理・資産管理・ナレッジ共有など、様々な業務に対応したアプリを、プログラミングの知識を必要とせず、マウス操作だけで素早く作成できます。
2020年3月に、プリザンターのSAML2.0に対応バージョンが提供開始となりましたので、PassLogicでの連携検証を実施しました。
プリザンターは、PassLogicと連携することで、認証用機器が要らないワンタイムパスワードによる認証強化が実現します。認証用機器が不要ということは、その分の導入・管理コストも不要で、ユーザーの機器の持ち運びも不要になります。
また、今回ご紹介するSAML2.0連携では、プリザンター側にユーザーを作る必要がなく、PassLogic側で一元管理できます。ユーザー側でプリザンター用のパスワードを新たに設定する必要がなくなることもメリットと言えるでしょう。
PassLogicでプリザンターにログインする様子は、こちらの動画をご覧ください。
この記事では、PassLogicのユーザーがプリザンターにログインするまでの設定プロセスをご紹介します。
プリザンター ユーザーマニュアル内のSAML2.0設定の解説ページは下記になります。併せてご参照ください。
プリザンター ユーザーマニュアル「プリザンターにSAML認証機能を追加する」
今回使用した各ソフトウェアのバージョンや環境は以下の通りです。
PassLogic エンタープライズ・エディション 4.2.0
(パッチ t1430、t1436を適用*)
*これらのパッチファイルはSAML連携の不具合を修正するパッチです。SAML連携を利用しない場合は必須ではありません。提供をご希望のPassLogicご利用者様は、「PassLogicお問い合わせフォーム」よりお問い合わせください。
プリザンター バージョン0.50.153.37693
それぞれAWS EC2上に構築しました。構築方法につきましては、下記のリンク先をご参照ください。
SAML2.0連携においては、サービスを提供する側を「SP」と呼び、認証作業を行い、認証情報をSP側に送る側を「IdP」と呼びます。今回の連携では、プリザンターがSP、PassLogicがIdPとなります。
PassLogicでプリザンターへログインする設定方法
それでは設定方法を説明していきます。
手順は大きく以下の3つの手順になります。
【手順1】PassLogicのSAML連携用証明書をプリザンターのサーバーにインストール
【手順2】PassLogic側でプリザンターをSPとして設定
【手順3】プリザンター側でPassLogicをIdPとし、プリザンターをSPとして設定
それでは各手順を詳しくご紹介します。
【手順1】PassLogicのSAML用連携証明書をプリザンターのサーバーにインストール
SPが、アクセスしてくるIdPが正しいものか判別できるように、IdPが発行した証明書をSPのサーバーにインストールします。
PassLogicの管理画面にログインし、メニューから「SAML>証明書管理」を選択。証明書が設定されている場合は、「証明書ダウンロード」から証明書をダウンロードしてください。未設定の場合は、証明書と秘密鍵を用意して、登録してください。
証明書と秘密鍵の作成について
自己SSL証明書の作成方法については下記ページ他をご参照ください。
ダウンロードした証明書のファイルをプリザンター側のサーバーのデスクトップなどに移動し、ダブルクリックしてインストールします。
今回は「ローカルコンピューター>個人」のストアにインストールしました。
インストールしたストアの情報と、証明書の「拇印」の値は【手順3】で必要になります。
インストール時に表示されるウィンドウの「詳細」タブから拇印の値をコピーして、テキストドキュメントなどに保存しておいてください。
【手順2】PassLogic側でプリザンターをSPとして設定
IdPであるPassLogicに、SPとSPに送信する内容を設定します。
PassLogic管理画面のメニューから「SAML>SP登録」を選択。「追加」ボタンからSP登録画面に遷移します。
登録フォームには下記の内容を登録します。
フォーム項目 | 説明と設定内容 |
---|---|
No. | PassLogicの管理画面およびログイン後の画面に表示される順番を番号(数字)で入力します。 |
プロバイダ | サービスプロバイダ(SP)の名称です。任意の名称を入力します。(例:Pleasanter) |
SAMLタイプ | ユーザーがプリザンター側からアクセスを開始することを想定し、「SP initiated SSO」を選択します。なお、SP initiated SSOを選択していても、PassLogic側からアクセスを開始して、プリザンターにログインすることも可能です。「IdP initiated SSO」にすることも可能ですが、その場合、「手順3」でWeb.configファイルを編集する際に注意が必要です。 |
NameIDフォーマット | IdPとSPのアカウントを紐づけるためのNameIDに何を使用するのかを選択します。今回はメールアドレスを利用するため「urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress」を選択します。 |
UIDタイプ | NameIDで使用するデータはPassLogicではどの項目に設定されているのかを指定します。今回は、メールアドレスを使用しているので「メールアドレス」を選択します。 |
ドメイン | 上のUIDタイプで「uid@ドメイン」を指定した場合には、ドメインをここで設定します。今回は「メールアドレス」を使用しているので、空欄にします。 |
RelayStateURL | SAMLリクエストをPassLogicに送付するためにアクセスするプリザンターのURLです。プリザンターの指定に従って下記の内容になります。 https://[プリザンター ベースURL]/Saml2/SignIn |
Recipient | SAMLレスポンスの送り先です。プリザンターの指定に従って下記の内容になります。 https://[プリザンター ベースURL]/Saml2/Acs |
Destination | SAMLレスポンス中に指定するDestination属性の値です。プリザンターの指定に従って下記の内容になります。 https://[プリザンター ベースURL]/Saml2/Acs |
Issuer | Pleasanter側でIdPを識別するための値です。PassLogicのログインページURLが用いられます。プリザンターの指定に従って下記の内容になります。 https://[PassLogicログインページURL]/idp.php |
Audience | SAMLレスポンス中に指定するAudience属性の値です。プリザンターの指定に従って下記の内容になります。 https://[プリザンター ベースURL]/Saml2 |
PassLogic FQDN | Idp metadataを使用する場合は、対象のPassLogicサーバーのFQDNを入力します。今回はIdp metadataを使用しないので、空欄にします。 |
Attribute mapping | PassLogicのユーザ情報のどの項目の内容を、どのような属性名でSP側に送るのか設定します。後で登場するプリザンター側の設定ファイル「Authentication.json」で、ここで設定した属性名を設定することになります。 (例:「氏名」を“Name”、部署を“Dept”、備考を“Body”と設定) |
「アクセスグループ」は、PassLogic内のユーザーおよびグループ情報に合わせて、アクセス可能とするユーザーグループを設定してください。「IPアクセスグループ」も同様です。
こちらが入力を完了したPassLogicのSP登録画面です。(モザイク部分はプリザンターのベースURL)
入力完了したら、「次へ」ボタンを押し、入力内容を確認して「決定」ボタンを押します。
【手順3】プリザンター側でPassLogicをIdPとし、プリザンターをSPとして設定
プリザンターをSPとして設定し、PassLogicをIdPとして認識させるために、プリザンターサーバー内の「Web.config」ファイルと「Authentication.json」ファイルの内容を変更します。
「Web.config」ファイルの変更
プリザンター ユーザーマニュアル「プリザンターにSAML認証機能を追加する」ページから「Web.configテンプレート」をダウンロードします。
プリザンター ユーザーマニュアル「プリザンターにSAML認証機能を追加する」
ダウンロードしたWeb.configファイルをテキストエディタで開き、「sustainsys.saml2」セクション内の各要素を設定します。
「sustainsys.saml2」セクションの変更
このセクションでは、プリザンター側の情報を設定します。
要素名 | 説明と設定内容 |
---|---|
entityId | プリザンターのEntityIDを指定します。プリザンターの指定に従って下記の内容になります。 https://[プリザンター ベースURL]/Saml2 |
returnUrl | 認証成功後に遷移する先を指定します。プリザンターの指定に従って下記の内容になります。 https://[プリザンター ベースURL]/Users/SamlLogin |
minIncomingSigningAlgorithm (要素の追加) |
PassLogicから送られてくるSAMLレスポンス中の署名は「SHA1」で暗号化されていますので、要素を追加して指定します。追加する内容は下記になります。 minIncomingSigningAlgorithm=”SHA1″ |
「identityProviders」セクションの変更
このセクションでは、PassLogic側の情報を設定します。
要素名 | 説明と設定内容 |
---|---|
entityId | PassLogicのEntityIDを指定します。PassLogicのSP登録【手順2】で「Issuer」に設定した値を設定します。 https://[PassLogicログインページURL]/idp.php |
signOnUrl | PassLogicのログインURLを指定します。PassLogicで「SP Initiated」の場合、下記のようになります。 https:[PassLogicベースURL]/ui/idp.php?target=[PassLogicのSP登録【手順2】で「プロバイダ」に指定した値] |
allowUnsolicitedAuthnResponse | 【手順2】でSAMLタイプを「IdP Initiated」にした場合は”true”にします。「SP initiated」の場合は”true”でも”false”でもかまいません。 |
binding | SAMLリクエストをPassLogicに送信する際に使用するバインディングを指定します。PassLogicの場合は”HttpRedirect”になります。 |
「signingCertificate」セクションの変更
このセクションでは、PassLogicが使用する証明書の情報を設定します。
要素名 | 説明と設定内容 |
---|---|
storeName | 【手順1】でインストールした証明書の場所を指定します。今回のように「ローカルコンピューター>個人」にインストールした場合の値は”My”になります。 |
storeLocation | 【手順1】でインストールした証明書の場所を指定します。今回にように「ローカルコンピューター」内にインストールした場合の値は”LocalMachine”になります。 |
findValue | 【手順1】で保存した拇印の値を設定します。 |
x509FindType | “FindByThumbprint”を設定します。 |
Web.configファイルの変更内容は以上です。
変更を実施した「sustainsys.saml2」セクションの記載例は下記になります。
<sustainsys.saml2 entityId=”http://[プリサンタ― ベースURL] /Saml2″
returnUrl=”http:// [プリサンタ―ベースURL] /Users/SamlLogin”
minIncomingSigningAlgorithm=”SHA1″>
<identityProviders>
<add entityId=https://[PassLogicログインページURL]/idp.php
signOnUrl=https://[PassLogicログインページURL]/idp.php?target=[PassLogicのSP登録で「プロバイダ」に指定した値]
allowUnsolicitedAuthnResponse=”true”
binding=”HttpRedirect”>
<signingCertificate
storeName=”My”
storeLocation=”LocalMachine”
findValue=”[証明書の拇印の値(40桁)]”
x509FindType=”FindByThumbprint” />
</add>
</identityProviders>
</sustainsys.saml2>
作成したWeb.configファイルを、プリザンターのインストールフォルダ内のWeb.configファイルと置き換えてください。
プリザンターのインストールフォルダは下記になります。
C:\inetpub\wwwroot\pleasanter
「Authentication.json」ファイルの変更
次に、下記のフォルダ内にある「Authentication.json」ファイルの内容を変更します。
C:\inetpub\wwwroot\pleasanter\App_Data\Parameters
ファイルをテキストエディタで開いてください。認証に関する設定要素と内容が記載されています。ここではSAML2.0連携設定に必要な要素のみを説明します。
要素名 | 説明と設定内容 |
---|---|
Provider | nullから”SAML”に変更します。これで通常のパスワード認証から、SAML2.0連携したIdPからの認証に切り替わります。 |
SamlParameters | 下記説明を参照してください。 |
SamlTenantId | プリザンターの指定に従って「1」になります。 |
「SamlParameters」以下の「Attributes」以下には、「Name」や「Birthday」といった設定要素が並んでいます。これらは、左側がプリザンターの属性名(ユーザー項目)で、右側に対応するIdP側の属性名になります。
IdP側で認証が完了すると、IdP側から送られてくるユーザーデータを基に、プリザンター側でユーザーを作成・更新します。その際に、IdP側からどのような属性名で送られてきたデータを、プリザンター側のどの属性にあてはめるのか、をここで指定します。
【手順2】の「Attribute mapping」の項目で設定した属性名を、対応させる設定要素の右側に入力していきます。
【例】PassLogicのユーザ情報の「氏名」を、プリザンターの「Name」属性に設定する場合
1:PassLogicのSAMLのSP登録フォームのにおいて、「Attribute mapping1」項目の入力欄に”UserName”と入力し、プルダウンで「氏名」を選択する
2:プリザンターのAuthentication.jsonファイルにおいて、「Name」要素の右側を”Username”に書き換える
これを任意の要素で設定していきます。
また、今回は【手順2】で、NameIDフォーマットを「urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress」にしました。ですので、プリザンター側の「MailAddress」要素にはNameIDの値を設定します。その場合、「MailAddress」要素を”{NameId}”とします。
各要素がプリザンター上で、どのような名前で表示されるのか、IdPから要素の値が送られてこなかった場合の動作など、詳細については、プリザンター ユーザーマニュアル「プリザンターにSAML認証機能を追加する」ページをご参照ください。
プリザンター ユーザーマニュアル「プリザンターにSAML認証機能を追加する」
変更を実施したAuthentication.jsonファイルの記載例は下記になります。
{
“Provider”: “SAML”,
“ServiceId”: null,
“ExtensionUrl”: null,
“RejectUnregisteredUser”: false,
“LdapParameters”: [
{
“LdapSearchRoot”: null,
“LdapSearchProperty”: “sAMAccountName”,
“LdapSearchPattern”: null,
“LdapLoginPattern”: null,
“LdapAuthenticationType”: null,
“NetBiosDomainName”: null,
“LdapTenantId”: 1,
“LdapDeptCode”: null,
“LdapDeptCodePattern”: null,
“LdapDeptName”: null,
“LdapDeptNamePattern”: null,
“LdapUserCode”: null,
“LdapUserCodePattern”: null,
“LdapFirstName”: “givenName”,
“LdapFirstNamePattern”: null,
“LdapLastName”: “sn”,
“LdapLastNamePattern”: null,
“LdapMailAddress”: “mail”,
“LdapMailAddressPattern”: null,
“LdapSyncPageSize”: 0,
“LdapSyncPatterns”: [
“(&(ObjectCategory=User)(ObjectClass=Person))”
],
“LdapExcludeAccountDisabled”: false,
“AutoDisable”: false,
“AutoEnable”: false,
“LdapSyncUser”: null,
“LdapSyncPassword”: null
}
],
“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
}
}
Web.configおよびAuthentication.jsonファイルの変更が完了したら、プリザンターのサーバーを再起動します。
これでプリザンターとPassLogicのSAML2.0連携作業は完了です。
連携検証済み製品との連携検証資料
今回はPassLogicとプリザンターとのSAML2.0連携方法についてご紹介しましたが、他のSAML2.0対応製品・サービスについても連携可能です。ぜひお試しください。
※連携方法については製品・サービスごとに異なります。
PassLogicとの連携検証済みの製品やサービスについては、 連携製品ページをご覧ください。
各種資料の提供をご希望の方は、「 PassLogicお問い合わせフォーム」よりお申し込みください。
※記事中に記載されている、会社名、製品名、ロゴ等は、各社の登録商標または商標です。
※記事中の方法は、2020年3月時点での情報です。