SAML SSO
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ユーザーによって取得されていないとき。ユーザーが同意しなかった場合の動作は認可ページの動作を参照してください。
パラメータ | 説明 |
---|---|
client_id | 貴社に発行されているclient_idです。環境によって異なることをご注意ください。 |
redirect_uri | リダイレクト先URIをセットします。redirect_uriで利用する値を登録・変更するには、Moneytreeにお問い合わせください。 |
response_type | code に設定してください。 |
scope | OAuth 2.0の認可スコープを指定します。詳細はご利用可能なスコープのページをご参照ください。 |
configs | authn_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設定ページのみを開きたい場合に、このフローを使用します。
まず、クライアントアプリケーションが対象の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:persistent
を AuthnRequest
内で要求します。
<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がログイン要求を行ったユーザーを特定することができます。
これを利用するには、myaccount
、vault
、link-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_id
と saml_subject_id
の両方のパラメータが存在する場合、システムは SAMLRequest
の Subject
タグとして 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に含まれます。
saml_subject_id`とSSOユーザーIDを照合するロジック
比較は単一のIdPの下にスコープされる。例えば、
IDP A
がIDP 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)に対応していません。
代わりに、ユーザーをログアウトするための標準的な方法を提供します。詳しくは下記のドキュメントを参照してください。
SSOコネクションの破棄要求
IdPはSSOのコネクションの破棄をMoneytreeにAPI経由で依頼できます。
この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以外の認証方式にフォールバックします。
詳しくは環境および接続を参照してください。
Updated about 1 month ago