Moneytree LINK SSOについて

Moneytree LINK導入企業様のサービスのご利用者様に対し、スムーズなID作成、または簡素化されたログイン手続きを実現するツールです。

  • LINK Single Sign-On (LINK SSO)は、弊社サービスであるLINK API、LINK KIT、またはLINK API Privateをご利用のお客様にご利用いただけます。
  • SAML2.0によるSSOをサポートしています。
  • 現段階では、LINK SSOはWEB版およびAndroid / iOS SDKに対応しています。
  • サービスの詳細、ご利用料金、導入のお手続きなどについては、弊社営業担当までお問い合わせください。

このページでは、お客様のサービスをMoneytreeのSAML Identity Provider (IdP) としてSAML認証する方法について説明します。SSOでログインしたユーザーは、通常のMoneytreeユーザーと機能的な違いはありませんが、通知全般が無効化されています。

SSO導入時には、Moneytree LINK導入企業様の「利用規約(ToS)」と「プライバシーポリシー(PP)」の2つのリンクが必要となります。導入前に、これらのリンクをマネーツリーにご提供いただきますようお願い致します。「利用規約(ToS)」と「プライバシーポリシー(PP)」が同一のページに存在する場合は、1つのリンクのみで構いません。

用語の説明

一般

認可:認可とは、Moneytree LINKのデータへのアクセス権限を指定する機能で、特にアクセス制御を行うことです。

認証:認証とは、コンピュータシステムの利用者の身元など、ある主張を証明する行為である。例えば、Identity ProviderがMoneytree LINKに利用者が確かに本人であると証明することをいう。

クライアント:SSOを導入されるMoneytree LINK利用者様を指します。

ユーザー:クライアントのサービスの利用者を指します。

Single Sign On (SSO): Single Sign Onの略称です。初回の認証処理により、独立した複数のシステムの機能が利用可能になる仕組みです。ユーザーはシステムごとにID/パスワードを作成・管理する必要がなくなります。

Identity Provider (IdP): Identity Providerの略称です。ユーザーの認証情報を管理するエンティティです。クライアントが該当します。

Service Provider (SP): Service Providerの略称です。ウェブサービスを提供するエンティティです。この場合Moneytreeが該当します。

Security Assertion Markup Language (SAML): SSOの複数ある方式の一つです。SAMLのアサーションによってIdPからSPにユーザ認証結果を伝える方式です。

Moneytree特有の用語

リファレンス: ユーザーがSSOでMoneytreeに認証・認可した時に作られる、MoneytreeユーザーとIdPおよびIdPのユーザーの紐付けです。
二回目以降の認可の時に認証をバイパスすることができます。また、認証のみのSSOを利用する場合に必要となります。

SAML SSOの流れ

SAML IdPと紐づけられたクライアントアプリケーションがMoneytreeで認証を要求すると、MoneytreeはIdPにSAML Requestを送信します。IdPはユーザを認証した後、認証されたユーザ(別名SAML Subject)を記述したSAML Responseを送信します。Moneytreeは、電子メールアドレスと持続識別子を使用してユーザアカウントを検索します。

以下のセクションでは、このフローで発生しうるさまざまなシナリオの詳細を説明します。

SAML IdPがクライアントにアクセストークンを要求する

このフローは、ユーザーのアクセストークンを取得するため、およびMoneytreeユーザーとIdPユーザーのリファレンスの作成に使用します。ユーザーが初めてMoneytreeの機能を使い始めるとき、初回のみこの手続きを行うことになります。

まず、クライアントアプリケーションは、Moneytree に対して authorization_code grantを付与した OAuth リクエストを送信します。Moneytree は HTTP POST バインディングで SAML <AuthnRequest> を IdP に送信します。IdP はユーザーを認証した後、<SAMLResponse> を作成し、HTTP POST バインディングで Moneytree に送信します。Moneytree は <SAMLResponse> を検証し、ユーザーをログインさせ、authorization_code を指定してクライアントのバックエンドにリダイレクトします。

必要に応じてユーザーの許可を取得する画面を表示しますIdPのユーザーの認証済みemailがMoneytreeユーザーによって取得されていないとき。ユーザーが同意しなかった場合の動作は認可ページの動作を参照してください。

SAML authorization flow

パラメータ説明
client_id貴社に発行されているclient_idです。環境によって異なることをご注意ください。
redirect_uriリダイレクト先URIをセットします。redirect_uriで利用する値を登録・変更するには、Moneytreeにお問い合わせください。
response_typecodeに設定してください。
scopeOAuth 2.0の認可スコープを指定します。詳細はご利用可能なスコープのページをご参照ください。
configsauthn_method%3Dssoに設定してください。

OAuthリクエストの例は以下の通りです。

https://myaccount-staging.getmoneytree.com/oauth/authorize?
    client_id=36bffb47b3965999eeae9ac513ebdcb35a187c428180d97ac6ae0cec144edbdd
    &response_type=code
    &redirect_uri=http://client.domain.com/oauth-callback
    &scope=accounts_read
    &configs=authn_method%3Dsso

<SAMLResponse><AuthnRequest> 値に関する制限は、Identity Providerの要件を参照してください。

IdPのユーザーの認証済みemailがMoneytreeユーザーによって取得されていないとき

Identity ProviderからSAMLレスポンスを受け取ったのち、ユーザーにクライアントアプリケーションとの接続およびマネーツリーアカウント作成の同意を求める画面を表示します。
ユーザーが同意した場合、Moneytreeアカウントの作成とIdPとの対応づけが行われます(リファレンスの作成)。

IdPのユーザーの認証済みemailがマネーツリーユーザーによって取得されているとき

Identity ProviderからSAMLレスポンスを受け取ったのち、ユーザーにMoneytree IDでのログインを促します。マネーツリーIDでの認証に成功した場合、クライアントアプリケーションとの接続の同意を求める画面を表示します。
ユーザーが同意した場合、MoneytreeアカウントとIdPの対応づけが行われます。一度リファレンスが作成されると、次回以降IdPからのSAML認証時にMoneytreeユーザーとしてログインが不要になります。

SAML IdPによるMoneytreeユーザーの認証とMoneytreeアプリケーションへの遷移

すでにMoneytreeユーザーとIdPのユーザーのリファレンスが存在するとき、そのユーザーの金融サービス登録・管理ページまたはMoneytree設定ページのみを開きたい場合に、このフローを使用します。

SAML authentication flow

まず、クライアントアプリケーションが対象のMoneytreeの画面のURLを開きます金融サービス登録・管理ページ または Moneytree 設定ページ )。次に、Moneytree は HTTP POST バインディングで SAML <AuthnRequest> を IdP に送信します。ユーザ名とパスワードを要求する等でユーザを認証すると、IdP は <SAMLResponse> を作成し、HTTP POST バインディングで Moneytree に送信します。Moneytree は <SAMLResponse> を検証し、ユーザーをログインさせ、目的のページ(金融サービス登録・管理ページ または Moneytree 設定ページ )を表示させます。もし <SAMLResponse>NameId のリファレンスがある Moneytree ユーザーアカウントが存在しない場合、 back_to URL にリダイレクトし(指定した場合)、なければエラー画面を表示させます。

Moneytreeの画面を開く例:

https://vault-staging.getmoneytree.com?
    client_id=36bffb47b3965999eeae9ac513ebdcb35a187c428180d97ac6ae0cec144edbdd
    &configs=authn_method%3Dsso
https://myaccount-staging.getmoneytree.com/settings?
    client_id=36bffb47b3965999eeae9ac513ebdcb35a187c428180d97ac6ae0cec144edbdd
    &configs=authn_method%3Dsso

back_toパラメータが設定された例:

https://vault-staging.getmoneytree.com?
    client_id=36bffb47b3965999eeae9ac513ebdcb35a187c428180d97ac6ae0cec144edbdd&
    configs=back_to%3Dhttps%3A%2F%2Fexample.com%26authn_request%3Dsso
https://myaccount-staging.getmoneytree.com/settings?
    client_id=36bffb47b3965999eeae9ac513ebdcb35a187c428180d97ac6ae0cec144edbdd&
    configs=back_to%3Dhttps%3A%2F%2Fexample.com%26authn_request%3Dsso

<SAMLResponse><AuthnRequest> 値に関する制限は、Identity Providerの要件を参照してください。

Identity Providerの要件と設定

Identity Providerの要件

あなたのサービスがMoneytreeのIdPとして機能するのに必要な事項です。

ℹ️ SAML version 2

<?xml version="1.0"?>
<samlp:Response 
  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
  Version="2.0">
  ...
</samlp:Response>

ℹ️ SAMLバインディング

Monetyreeは、POSTバインディングが利用可能な場合、SAML <AuthnRequest> をHTTP Postバインディング (urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST) で送信します。

<samlp:AuthnRequest ProtocolBinding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'>
</samlp:AuthnRequest>

ℹ️ NameId 形式

クライアントアプリケーションは、メールやユーザー名以外でクライアントアプリケーションのユーザーを識別する <NameID> をサポートしなければなりません。これは urn:oasis:names:tc:SAML:2.0:nameid-format:persistent という形式でなければならず、各ユーザーはそれぞれユニークな <NameId> の値を持ち、その値は絶対に変更されないようにしてください。Moneytree は urn:oasis:names:tc:SAML:2.0:nameid-format:persistentAuthnRequest 内で要求します。

<samlp:AuthnRequest>
  <samlp:NameIDPolicy Format='urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'/>
</samlp:AuthnRequest>

IdPは、このリクエストに対して、ユーザーの<NameID>をこのような形式でレスポンスとして返す必要があります。

<samlp:Response>
 <Assertion>
   <Subject>
     <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">USER-ID-HERE</NameID>
   </Subject>
 </Assertion>
</samlp:Response>

SAML レスポンスには、メールやユーザー名以外に、クライアントアプリケーションのユーザーを識別する <NameID> を含める必要があります。これは urn:oasis:names:tc:SAML:2.0:nameid-format:persistent という形式でなければならず、各ユーザはそれぞれユニークな <NameId> の値を持ち、その値は絶対に変更されないようにしてください。

<Response><Assertion><Issuer>は、Moneytree に登録された IdP の識別子であること。

<samlp:Response>
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://saml-idp.example.com/saml-metadata</Issuer>
  <Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
    <Issuer>http://saml-idp.example.com/saml-metadata</Issuer>
  </Assertion>
</samlp:Response>

ℹ️ <StatusCode>は必ずSuccessとすること。

<?xml version="1.0"?>
<samlp:Response>
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
  </samlp:Status>
</samlp:Response>

ℹ️ <Assertions>には、IdP が Moneytree に登録した鍵で署名された有効な署名が含まれていなければならな い。

<?xml version="1.0"?>
<samlp:Response>
  <Assertion>
    <ds:Signature>
        ...
    </ds:Signature>
  </Assertion>
</samlp:Response>

ℹ️ <Conditions><AudienceRestrictions>を含み、https://myaccount.getmoneytree.com/saml/metadata(本番環境)かhttps://myaccount-staging.getmoneytree.com/saml/metadata(検証環境)に制限される必要があります。

<?xml version="1.0"?>
<samlp:Response>
  <Assertion>
    <Conditions>
      <AudienceRestriction>
        <Audience>https://myaccount.getmoneytree.com/saml/metadata</Audience>
      </AudienceRestriction>
    </Conditions>
  </Assertion>
</samlp:Response>

ℹ️ SAMLレスポンスに確認済みのemailアドレスを<AttributeStatement>に含める必要があります。属性名は デフォルトではemailに設定をされています。属性名を変更する必要がありましたらMoneytreeへご相談ください。

<?xml version="1.0"?>
<samlp:Response>
  <Assertion>
    <AttributeStatement>
      <Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <AttributeValue>[email protected]</AttributeValue>
      </Attribute>
    </AttributeStatement>
  </Assertion>
</samlp:Response>

Identity Providerの設定

Moneytree SP SAML エンティティメタデータに従って、IdP を設定してください。

📘

Moneytree Service Provider (SP)のエンティティメタデータ

Moneytree SPのエンティティメタデータは、環境ごとに異なります。
検証環境: https://myaccount-staging.getmoneytree.com/saml/metadata
本番環境: https://myaccount.getmoneytree.com/saml/metadata

🛑

Moneytree Service Provider (SP)の署名するために使用される暗号鍵の有効期限について

SAML リクエストに署名するために使用される暗号鍵の有効期限は 2027 年 8 月 17 日となります。SAML Service Provider メタデータを静的に設定している場合は、暗号鍵の有効期限が切れる 1 ヶ月以上前に Service Provider メタデータを更新していただく必要がございます。

Moneytreeへ提供する情報

IdPのSAMLエンティティメタデータをMoneytreeに提供してください。IDP の entityID である HTTP URL を介して提供するか、XML を Moneytree と直接共有してください。

IdP エンティティのメタデータは、有効な SAML メタデータ でなければならず、また、<IDPSSODescriptor> を含んでいなければなりません。

  • HTTP-POST または HTTP-Redirect の Binding を持つ <SingleSignOnService>。そして Location のURIスキームは https である必要があります。
  • <KeyDescriptor>use="signing" 属性と <KeyInfo> に鍵データを埋め込む を指定します。SAML アサーション を検証するための公開鍵です。
  • <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent という値を指定します。
  • entityID はURIスキームが https であることを推奨します。

IdP メタデータ 例

<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
    entityID="https://idp.example.com/SAML/metadata">
    <IDPSSODescriptor>
        <KeyDescriptor use="signing">
            <ds:KeyInfo>
                <ds:X509Data>
                    <ds:X509Certificate> MIIFODCCAyACCQCcFoR61tpXjjANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJKUDEOMAwGA1UECAwFVG9reW8xDjAMBgNVBAcMBUF6YWJ1MRIwEAYDVQQKDAlNb25leXRyZWUxGzAZBgNVBAsMEsOpwpbCi8OnwpnCusOpwoPCqDAeFw0yMjA2MDIwMjU1NTVaFw0zMjA1MzAwMjU1NTVaMF4xCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzEOMAwGA1UEBwwFQXphYnUxEjAQBgNVBAoMCU1vbmV5dHJlZTEbMBkGA1UECwwSw6nClsKLw6fCmcK6w6nCg8KoMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YvE2XeibdXiDJQRxoAqPawtylZUsFwmQHU9wJnGMZEO/W1RwqKHgEgJeeeIoZI17eABVejg+axu8jbCLFECGmUdEfM9RpTORl3wKzygvgegyuAqXqHkSjmP43Lnvq6dcAHOOCDaeBwnkh0ltjZz27326aN6Yqq1tWH3WG6Q26dB7sXT9PKuVn1lBPPcFYcxtR8sqe39YaCBHumnukHvaHmAOsQlM6JFaYkBnkddU85VWhRwT0mLX++LiIDt47gnGRy71SslxDR1vk9vYOmq6EApR+bDXnwYxfo2eaN1wTKVwdemtIhHNFZQBwEff7g+IvEbNa8pSu2gI6N0IjpiZwEPnwyiNdPnSReAAmP5cQhu2h4VnztYaOx56Xvi3b5qk3enhkEV9NZceAoePbt6OauePbiCkSy2ylUaCW3vRfsZrikd17cI6u8rzAlmCJnVMtAZuMrvX9qGd3xSU2MPhtiFG5yG6UanR4Hyds8Czkc4U3xnoNRfzHOkIDPHf8ytU2M495q1amPMUzKBQYo5ihiJLzz9XMdsCaEqvjic/32VrVCXFie8n8qxt3MCLYe0uTLHJlYd7ET6xa33rFQ0mOVsJ4Jd1neixLzZorWv6EQY7f5CcEc6Jw/CYwa3LQThMOeir2fYChr2Htkxi1gJN3EcgwkZUO/rM+eNqDOkkBcCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAqOWlNSXfhnw8w+fgozNozxNq/lx8bcf/cKbWSK5BU9g8CkhG9bIuw+gDHgKKlGUUMsiU1bY/qWh1mW5FEb39+dcx4jWmVmkoFy4+gwGc8gcv0Gjfa9enaI0Po+aDOTrnzGJVyN4KYNa7u38fbeJAwO7m9tT36z6ZvtkPsE7tpxW4bRyGtwFUc3OlDV7wWdrWMfEUBX7eyej+6hdvVx+dtn7UL3tCllyi40vHM3QM8y3RRrPG0Og3mUrsdJOqsh5YcT8VH8GsZNGAuUIKICNUwivoMzxVQ3Ygx93Qp7spXdcHY2C0rsYrai6J0ux2D9tDJe7Dfaa1rCASSVhDrDI8V3xHVPk6oMQqphauDPxUTSLKF/NeVbNGqwnybLb5gaB8to00/lyW/2q0teR82QPJXulr97ySEE73KAEWti9SMd8+jcPbE3XGstMUxHFruMR+Bt3PM5EaX6Rp1lZg/G4lMMgDup/6nxftIGtukgEOOlhV3Ab1KjoqxLl2P4xRTUoa0GOakwV8NHLGVXyZcgcGH6C6/VWtQUXn3gZvMmMrg3wblVvTn+guyLV+9W6PVmUcD7dxwcPMrlo6SOsZOAOcxm552rRflhkKa1oziFqBPQkS7FvEInKZqxFGRLhYgpnTpPJ7Z0AcNWEwl8T+jB+m39uT/MWuP5c0n1LfoXvz7eg= </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </KeyDescriptor>
        <NameIDFormat>
          urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
        </NameIDFormat>
        <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://idp.example.com/SAML/SSO/Browser"/>
    </IDPSSODescriptor>
</EntityDescriptor>

🚧

本番環境と検証環境で異なる署名キー

セキュリティ上の理由から、検証環境と本番環境ではIdPエンティティおよびキーは異なる必要があります。検証環境と本番環境それぞれに、異なる鍵のIdPメタデータをご用意ください。
Moneytree SP環境ごとに異なるエンティティメタデータを作成しています。
検証環境: https://myaccount-staging.getmoneytree.com/saml/metadata
本番環境: https://myaccount.getmoneytree.com/saml/metadata

🛑

Authentication Requestsは常に署名されます

Moneytreeは常にAuthentication Requestsに署名を行います。お客様のIdPのエンティティメタデータの WantAuthnRequestsSigned 属性は無視されます。
これは、SSOフローのセキュリティを向上させるためです。

SAML SSO利用時は、MoneytreeにはIdP entity IDに紐付けるApplication IDを提供してください。(新規作成の場合はMoneytreeに連絡してください)

SAML Subject Identifier

SAML subject identifierは、SAML認証時にSAMLRequestに含めることができるSSOユーザーIDで、IdPがログイン要求を行ったユーザーを特定することができます。

これを利用するには、myaccountvaultlink-kitのサブドメインを持つMoneytreeのURLに、パラメータとしてsaml_subject_idを追加してください。以下は、ステージング環境と本番環境で、これらのパラメータを使用したURLのサンプルです。

https://myaccount-staging.getmoneytree.com/settings/change-language?client_id=xxx&saml_subject_id=xxx
https://myaccount.getmoneytree.com/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&saml_subject_id=xxx
https://vault.getmoneytree.com?client_id=xxx&saml_subject_id=xxx

📘

saml_subject_id`をURLエンコードしてください

特殊文字によるエラーを避けるため、必ず saml_subject_id を URL エンコードしてください。

URL に client_idsaml_subject_id の両方のパラメータが存在する場合、システムは SAMLRequestSubject タグとして saml_subject_id 値を含めるようにします。

📘

URLには必ずclient_idを含めてください

SAML Subject Identifier を渡す場合は、client_id が必要です。saml_subject_id を単独で渡しても、この機能は有効になりません

Subject タグを持つ SAMLRequest の例:

<samlp:AuthnRequest AssertionConsumerServiceURL='https://myaccount-staging.getmoneytree.com/saml/asc' Destination='http://idp.com/http-post/sso' ID='_691b7721-4c39-4aaf-8025-fe368a6e0233' IssueInstant='2022-11-10T09:53:41Z' ProtocolBinding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST' Version='2.0'
    xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'
    xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'>
    <saml:Issuer>https://myaccount-staging.getmoneytree.com/saml/metadata</saml:Issuer>
    <ds:Signature xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm='http://www.w3.org/2001/10/xml-exc-c14n#'/>
            <ds:SignatureMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'/>
            <ds:Reference URI='#_691b7721-4c39-4aaf-8025-fe368a6e0233'>
                <ds:Transforms>
                    <ds:Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature'/>
                    <ds:Transform Algorithm='http://www.w3.org/2001/10/xml-exc-c14n#'>
                        <ec:InclusiveNamespaces PrefixList='#default samlp saml ds xs xsi md'
                            xmlns:ec='http://www.w3.org/2001/10/xml-exc-c14n#'/>
                    </ds:Transform>
                </ds:Transforms>
                <ds:DigestMethod Algorithm='http://www.w3.org/2001/04/xmlenc#sha256'/>
                <ds:DigestValue>nuN5oKusaRW6gr88IDC4ndh2gAFff1ZlDnw3xZ2dNRk=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>XU+xJVu1iAsRIDc8xWP6tJ/JPYsk6m3CPV++FdRh7esQirjwMOwAlSv1h8hw/UZgo9e0dm+ss7OTFyxPGJR263dQxvRw9RLCwIue2OeEHzxLT41P+1jj03GdSInnewRwqMBQf3b5ctKQoL6fbbd+VMvmc0Iv5Pt0aZeZ9FBePvcSA60BWTRbY0IGGnt+Kt0edJTlxugedDshYkqUA7eZKbgiRk3XHIrWlWLUtckSBewbK/qkhcv+Dq+ZTOv+kSOfGTvqtATmqOFRDsLfsuGHWsESnRNOdrjZTIuZ6p4IjWfiL+oQFWqgdAxiQpdKwLikGn70O9PoYtumM8NFKE205Q==</ds:SignatureValue>
        <ds:KeyInfo>
            <ds:X509Data>
                <ds:X509Certificate>MIIC3jCCAcYCCQC6wJ1XsB+aEjANBgkqhkiG9w0BAQsFADAxMQswCQYDVQQGEwJKUDEOMAwGA1UECAwFVG9reW8xEjAQBgNVBAoMCU1vbmV5dHJlZTAeFw0yMjA3MjUwMjU3MzBaFw0yMzA3MjUwMjU3MzBaMDExCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzESMBAGA1UECgwJTW9uZXl0cmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApSuOJlDpSqdr3GOnFUdamm9McnPFYeUBPm79FrvLR2m7h04gJRL5SD+c4P7qqU0BjCSy76Rd6cn3oGiF7TJ2i/9EGKiNgnknop28TbC1LVcZ+uMEpDGQplH37TeCe3WVgFHuMvb/17wE+FAfO9+VuwlaEVxpve9L+u7mC9XUU8w9CbP7MA6zp9qzJpcNISHSL8yiv0tJiA88uXv/5XSocG4VHVBHyyiBPjSjRXSA3eiDUARMZa0lGJJAbbhUkGMo9d91skQUMr7qkuSetofcB/GRYg2osrZ1pk4vuENR0hXoaNmBKhhRSZBnKvBufA0oXOlhzcmS1HZ5LPUIGc2amQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBLxtHHVsRx2calCukMRFqMJjinPkRroDZtm3DA1HXpz3MZRoZ5ct18lrqsbfAysa8jLut05kh8eWywud7mW7KCr9eMoGwIw4tzw9GlxCAJE8+h46zr6Ya6I5UNcom0LYyJiI6TOFUvUYD8QxyNWkQHd4UsWD2t6Q/clClEAQHu+hPSEGCOFiE1Bpt0+AmKRk0mD48ATEvZXhNpkdHE8g01RrWGmw+0AuuKf2uanrg3+G1LNW3/B1ryykQUNmz1iYJi0cgB3oP1VHI/7Oau9FaLMxWPBd1yu+Y7qK2uGm4V66jZnfOeGaQBYxXdsqBf8aDWFr5hS8WV823p7DmpYih0</ds:X509Certificate>
            </ds:X509Data>
        </ds:KeyInfo>
    </ds:Signature>
    **<saml:Subject>
        <saml:NameID Format='urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'>sGjiP0E4qt9ihVLz+1365S2OHYrL9ai3JZlgMrYA3jA=</saml:NameID>
        <saml:SubjectConfirmation Method='urn:oasis:names:tc:SAML:2.0:cm:bearer'/>
    </saml:Subject>**
    <samlp:NameIDPolicy AllowCreate='true' Format='urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'/>
</samlp:AuthnRequest>

📘

NameID フォーマットについて

NameIDのフォーマットは urn:oasis:names:tc:SAML:2.0:nameid-format:persistent で、Moneytreeは他のフォーマットをサポートしません。

アクティブなユーザーセッションがある場合の動作

URLリクエスト中にアクティブなセッションが存在する場合(例:Moneytreeにログインしているユーザー)、MoneytreeはユーザーのSSOユーザーIDとURLで指定された saml_subject_id を比較する。

値が一致する場合、IdPとの再認証は必要なく、リクエストは続行されます。

値が一致しない場合、現在のアクティブセッションユーザーはログアウトされ、再認証のためにユーザーはIdPにリダイレクトされます。上記の前のセクションで述べたように、saml_subject_idはSAMLRequestに含まれます。

VaultまたはAuthorization URLでの`saml_subject_id`の使用例

VaultまたはAuthorization URLでのsaml_subject_idの使用例

📘

saml_subject_id`とSSOユーザーIDを照合するロジック

比較は単一のIdPの下にスコープされる。例えば、IDP AIDP Bと同じSSOユーザーIDを持っている場合、client_idのSAML構成に基づいて、正しいIdPのみがマッチングされます。

📘

saml_subject_idをハッシュ化します。

デフォルトでは、SSOユーザーIDをハッシュ化せずに saml_subject_id 値として受け取ることを想定しています。セキュリティ上の理由でSSOユーザーIDをハッシュ化する必要がある場合は、SSOユーザーIDをハッシュ化する方法を設定し、再認証チェックが期待通りに動作するようにするため、弊社までお問い合わせください。

Single Logout

Moneytreeは現在SAML single logout (SLO)に対応していません。
代わりに、ユーザーをログアウトするための標準的な方法を提供します。詳しくは下記のドキュメントを参照してください。

MoneytreeログアウトURL

SSOコネクションの破棄要求

IdPはSSOのコネクションの破棄をMoneytreeにAPI経由で依頼できます。

DELETE /saml/connection

このAPIは、Moneytreeに対し、SSOのコネクションを破棄することを要求するAPIです。リクエストが受理されると、Moneytreeは、ユーザーの状態に基づいて処理を決定します。

ユーザーがSSO以外の手段でMoneytreeにログインしておらず、該当IdP以外のSSOのリファレンスが存在しない場合はユーザーを削除します。
それ以外の場合、IdP に関連付けられたクライアントの認可と、IdP およびユーザのリファレンスが削除されます。
リクエストが受理されたら、202の返答が返されます。

📘

この機能を利用するには、限定的なスコープ delete_sso_connection を持った専用のoauthクライアントを作成する必要があります。このスコープはclient credentials認可の時のみ利用可能です。

SAML SSOをテストする

あなたのIdPとMoneytreeのインテグレーションを弊社の検証環境でテストすることができます。
Moneytreeへ提供する情報に基づき、弊社で環境のセットアップを行います。

IdP設定完了後、 上記で説明される ように、configsパラメターにauthn_method%3Dssoを含め、SSOを有効化する必要があります。
パラメターを渡したが、弊社にてIdPの設定が未完了である場合は、SSO以外の認証方式にフォールバックします。

詳しくは環境および接続を参照してください。