ガイドAPIリファレンス
ガイド

OLP CLIによるSAMLの設定方法

このセクションでは、OLP CLIを使用してSSOを設定します。

シングルサインオン (SSO) を使用すると、HEREプラットフォームユーザーは独自のIDプロバイダー (IdP) を使用して認証できます。これにより、認証ポリシーへの準拠が保証され、権限を持つユーザーのアクセスを動的に制御できます。

SAML 2.0を使用したHEREとのSSO統合

HEREは、SAML 2.0プロトコルを使用するSSO統合をサポートしています。

この機能を組み込むには、組織は次のいずれかをサブスクライブする必要があります。

  • Premium SuccessプランまたはPremiumプラン
  • Platinumパートナー
  • Goldパートナーにはアクセス権がありますが、SSOを有効にするにはPremiumプランをサブスクライブする必要があります。

詳細については、「HEREサポートプラン」を参照してください。

IdPテンプレート

HEREには、組織のSSOを次のIDプロバイダーと統合するためのテンプレートが用意されています。

  • OKTA
  • Keycloak
  • Entra
  • 汎用:汎用テンプレートを使用すると、他のIDプロバイダーを使用できます。
📘

汎用テンプレートを使用する場合、組織は必要な全パラメーターを設定し、SAML 2.0標準に準拠していることを確認する必要があります。完全に準拠していれば、統合が可能です。

IdPマネージャーを割り当てる

組織内で新しいIDプロバイダーを設定したり、IDプロバイダー (IdP) 設定を更新したりするには、IdPマネージャーの役割を割り当てる必要があります。アクセスが中断されないようにするには、組織内のユーザーに少なくとも1つのIdPマネージャーの役割が常に割り当てられているようにしてください。

組織管理者または組織招待主の役割を持つユーザーは、次のことができます。

  • 新しいユーザーを招待し、IdPマネージャーの役割を割り当てる。
  • または、組織内の組織管理者または組織招待主に、自分に代わって役割を割り当てるように依頼する。
📘

注 制限付きアクセスの役割を追加しないでください。追加すると、IdPマネージャーがプラットフォームにサインインできなくなります。

次の図は、招待が完了するまでのプロセスのサンプルを示しています。

HEREプラットフォームの招待画面。

招待された人が招待を承諾すると、割り当てられた役割が招待された人に割り当てられます。

IdPマネージャーのアプリを作成する

IdPを設定する前に、組織管理者の役割とIdPマネージャーの役割を持つアプリを作成する必要があります。あらかじめ作成した組織管理者アプリをIdPマネージャーの役割用に使用することも、別のアプリをIdPマネージャーの役割専用で使用することもできます。

📘

組織内のIdP情報を設定または変更できるのはIdPマネージャーのみです。

これらの役割でアプリを設定するには、「アプリを管理する」を参照し、資格情報ファイルをダウンロードする際に次の名前を使用します。

  • IdPアプリ用の新しいアクセスキーセットを作成し、ダウンロードした資格情報ファイルにIDPManager_app_credentials.propertiesという名前を付けます。
  • 組織管理者アプリの新しいアクセスキーセットを作成し、ダウンロードした資格情報ファイルにorg_admin_app_credentials.propertiesという名前を付けます。

IdPマネージャーアプリを準備する

IdPマネージャーアプリを準備するには、次の手順を実行します。

  1. OLP CLI SDKには、アプリケーションの設定に使用できる情報があります。HEREプラットフォームから、適切なHERE OLP CLI SDKファイルを選択してダウンロードします。これは、使用しているオペレーティングシステムによって異なります。SDKがすでにインストールされている場合は、バージョン17.5.17以降を使用していることを確認します。詳細については、「HERE OLP CLIユーザーガイド:IDプロバイダー」を参照してください。
  2. ダウンロードが完了したら、次のコマンドを実行してIdPマネージャーアプリと組織管理者アプリのアプリIDを取得します。
olp org app list --credentials {'{OrgAdminAppCredentialsFilePath}'}
  1. 組織IDとアプリケーションIDは、HEREプラットフォームでも確認できます。
    • HEREプラットフォームのアカウントアイコンを選択して、組織IDを確認します。名前の下の[組織]ラベルの後に表示されます。

アカウントアイコン。

  • ランチャーから[アクセスマネージャー]を選択して[アプリ]タブで検索し、IdPマネージャーアプリを見つけて選択します。
  1. 組織IDとアプリIDを置換して、appHRNとrealmHRNを次の形式で作成します。
   appHRN=hrn:here:account::{'{orgID}'}:app/{'{appId}'}
   realmHRN=hrn:here:account::{'{orgId}'}:realm/{'{orgId}'}
  1. 次のOLP CLIコマンドを実行して、組織で使用可能な役割を一覧表示します。
olp role list {'{realmHRN}'} --credentials {'{OrgAdminAppCredentialsFilePath}'}

以下のコマンドは、orgID値org123456を使用し、ダウンロードしたorg_admin_app_credentials.propertiesファイルから組織のアプリ資格情報を使用して役割リストを取得するサンプルです。

olp role list hrn:here:account::org123456:realm/org123456 --credentials ~/Downloads/org_admin_app_credentials.properties

役割リストの結果は次のようになります。

HRN                                                                                               name
hrn:here:authorization::org123456:role/ROLE-aa8f6020-0a6b-41f4-9a00-f6ea527b13c1                  IDPManager
hrn:here:authorization::org123456:role/ROLE-ff341d16-65d9-49af-a02b-f4c1e4307a4a                  OrgAdmin
  1. 次のコマンドを使用して、任意のアプリケーションにIDPManager役割を割り当てます。

olp role assignment add {'{roleHRN}'} {'{appHRN}'} --credentials {'{OrgAdminAppCredentialsFilePath}'}

詳細については、「HERE OLP CLIユーザーガイド - IDプロバイダー」を参照してください。

roleHRNは上の役割リストの値を使用し、appHRNはorg12356:app/myidpappを使用し、資格情報はダウンロードしたorg_admin_app_credentials.propertiesファイルから使用します。以下のサンプルは役割割り当てを追加する例です。

olp role assignment add hrn:here:authorization::org123456:role/ROLE-aa8f6020-0a6b-41f4-9a00-f6ea527b13c1 hrn:here:account::org123456:app/myidpapp --credentials ~/Downloads/org_admin_app_credentials.properties
  1. 次のコマンドを実行して、アプリに割り当てられた役割を確認します。
olp role assignment list hrn:here:account::org123456:app/myidpapp --credentials ~/Downloads/org_admin_app_credentials.properties

IdP設定

組織のIdP設定を行うには、次の手順を実行します。

  1. 組織のSSOを管理するユーザーから、IDプロバイダーのメタデータファイルまたはメタデータURLを取得します。メタデータファイルは、次のサンプルファイルのようになります。
<md:EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:md="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="http://keycloak.myorg.com/realms/demo">
    <md:IDPSSODescriptor WantAuthnRequestsSigned="true"
                         protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo>
                <ds:KeyName>EHHW9vzTKOLqiT2HRHdmewGg92vd900kxrhFSHTogbI</ds:KeyName>
                <ds:X509Data>
                    <ds:X509Certificate>
                        MIICmTCCAYECBgGPqjxc3jANBgkqhkiG9w0BAQsAFDAQMQ4wDAYDVQQDDAVkZW1vMjAeFw0yNDA1MjQxMDUyMTNaFw0zNDA1MjQxMDUzNTNaMBAxDjAMBgNVBAMMBWRlbW8yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyuJ8uGBpmZ8MvuSy1VS4GVxkvBNVQp+JoyCSiMb10yiPvu+XsgkDpguG26i2jAf5qhUJ2Qre0xv1znSMa6g8N5ujgUvD+rTnkV8Twg2RgSS1i9gfWKb61qf5fD9eyPRBkOe2Xci1SXm/0q9fiGolcJ95+0X+4IH8evDb0REwigjTuiD24CbGinFQtCh73j2WJ+WlrFaGrP3HuauKpxWpy+etufJrL9I9mSvYuF4iw24RgbkBwHrMle6f7NwHR5y/ON3iR1HJsGk9sdgGGnL+YQ4ng6vGWg8LzarF0wgW5elFeNt3ftuT/LVyICo3/L0yBnEyP519t9DuTsWQ8/FCvQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCMPb3XBbw1HfeVwp7/3ChFKYRVzZVuAiBD9jjcHzxodpsoP2RYaW50iPMuaavdJSnKSYduay5q8cHWc+dCKvJAZtSJNjl5ctOPfLqxncHz0+X+wcJqkI4hygdMsHtuAADVybM81tJ3ZmfwUhEET9sB1bWLnwsfQ67hyyP0Vbc46tFrR1Wxg3o2C9rTv7ZQBg9ztrXIDbo4oN9dC7+72jTU39+xh7NaRzeZAMzJxiNL6NGLqxw1BcUuX2hJG1gaK3uTALpFXlhVl8mR9odYiM0+7v7w6q3dskxqF55snfFbNB9Hwug7EH/KEsRNA7U3cFEj4ZN4l3QrIqORvqWyWOWL
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
                                      Location="http://keycloak.myorg.com/realms/demo/protocol/saml/resolve"
                                      index="0"></md:ArtifactResolutionService>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                                Location="http://keycloak.myorg.com/realms/demo/protocol/saml"></md:SingleSignOnService>
        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
                                Location="http://keycloak.myorg.com/realms/demo/protocol/saml"></md:SingleSignOnService>
    </md:IDPSSODescriptor>
</md:EntityDescriptor>
  1. 次のコマンドを使用して、HEREプラットフォームがSSO統合用にサポートしているすべてのIDプロバイダーを一覧表示し、IDプロバイダーテンプレートを選択します。
olp identity provider template list --credentials ~/Downloads/IDPManager_app_credentials.properties

結果は次のようになります。

ID              name
okta            Okta
keycloak        Keycloak

次の図は、Keycloakテンプレートの例を示しています。

サンプルテンプレート。

必要に応じてテンプレートを編集できます。

  1. 次のコマンドを使用して、組織のIdP設定を作成します。
olp identity provider create {'{identity provider display name}'} {'{identity provider template Id}'} {'{url or path to metadata file}'} --credentials {'{IDPManagerAppCredentialsFilePath}'}

次の表は、このコマンドで使用される値の説明です。

説明
identity provider display nameログインボタンに表示される表示名。
identity provider template IdサポートされているテンプレートID。リストから1つのIDを選択します。例:「keycloak」
url or path to metadata fileIdPメタデータファイルのHTTPS URLまたはローカルパスを入力します。

次のサンプルコマンドは、IdP設定の作成方法を示しています。

olp identity provider create "My SSO Login" keycloak https://keycloak.app/realms/master/protocol/saml/descriptor --credentials ~/Downloads/IDPManager_app_credentials.properties

結果は次のようになります。

SAML identity provider hrn:here:account::org123456:samlIdentityProvider/IDP-b47bf594-d08d-4508-94bf-23e97d517f61 has been created

SSOを有効にする

📘

重要

設定中に組織へのアクセスが不可能になった場合、IdPマネージャーはプラットフォームの一時アクセス回復プロセスを通じてアクセスを回復できます。このアクセスは現在のセッション中のみ有効です。ユーザーがセッションからログアウトした場合、一時的にサインインするには一時アクセス回復プロセスを再度呼び出す必要があります。このプロセスを使用するには、組織IDを知っている必要があります。プラットフォームで組織IDを見つけるには、プラットフォームページのアカウントアイコンをクリックすると、組織IDが表示されます。

SSOを有効にする前に、SAMLレスポンスがHEREプラットフォームとの互換性を持つことを確認してください。

SAMLレスポンスとHEREプラットフォームの互換性に関する技術要件

SAML 2.0コア仕様では、HTTP POSTバインディングを使用する場合、要素はSAML 2.0仕様で定義されたアルゴリズムのいずれかを使用して署名されなければなりません。たとえば、SHA-256を使用するRSA、SHA-256を使用するECDSAなどが該当します。SAMLレスポンスには、少なくとも次のアサーションが含まれている必要があります。

  • メール
  • 国コード
📘

アサーションが署名されていない場合は、(SAMLレスポンス全体が署名されている場合でも) SSOは常に失敗します。

SSOを有効にするには、次の手順を実行します。

  1. 次のコマンドを使用してIdP設定を表示します。
olp identity provider show {'{idpHRN}'} --credentials {'{IDPManagerAppCredentialsFilePath}'}

以下はサンプルコマンドです。

 olp identity provider show hrn:here:account::org123456:samlIdentityProvider/IDP-b47bf594-d08d-4508-94bf-23e97d517f61 --credentials ~/Downloads/IDPManager_app_credentials.properties

結果は次のようになります。

HRN                   hrn:here:account::org123456:samlIdentityProvider/IDP-b47bf594-d08d-4508-94bf-23e97d517f61
name                  My SSO Sign in
template ID           keycloak
entity ID             https://keycloak.app/realms/master
SSO login URL         https://keycloak.app/realms/master/protocol/saml
created               2025-01-10T09:12:48.566Z
enabled               false
callback              https://account.here.com/saml/saml-call-back
SP metadata URL       https://account.api.here.com/idWRlbnRpdHlQcm92aWRlci9JRFAtYjQ3YmY1OTQtZDA4ZC00NTA4LTk0YmYtMjNlOTdkNTE3ZjYx/metadata
SP certificate URL    https://account.api.here.com/identityProviders/aHJuOmhlcmUtZGRlbnRpdHlQcm92aWRlci9TQtZ0NTA4LTk0YmYtMjNlOTdkNTE3ZjYx/cert
  1. エンティティIDとSSOログインURLを確認します。
  2. アサーションの暗号化が必要な場合は、SP証明書URLで指定された証明書をIdP側に適用することで有効にできますアサーションの暗号化が必要ない場合は、この手順をスキップします。
  3. IdPを有効にするには、次のコマンドを実行します。
olp identity provider enable {'{idpHRN}'} --credentials {'{IDPManagerAppCredentialsFilePath}'}

以下はサンプルコマンドです。

olp identity provider enable hrn:here:account::org123456:samlIdentityProvider/IDP-b47bf594-d08d-4508-94bf-23e97d517f61 --credentials ~/Downloads/IDPManager_app_credentials.properties

SSOが正常に有効にした後は、組織内の全ユーザーがSSOを使用する必要があります。SSOを有効化すると、既存ユーザーのパスワードはすべて無効になります。そのため、サインインするにはIdPに有効なアカウントが必要です。この時点から、組織へのサインインにはSSOのみが使用されます。

📘

SSOを有効にしても、現在サインイン中のユーザーはサインイン状態を維持します。次回以降のサインインでは、すべてのユーザーがSSOを使用する必要があります。

SSOをテストする

SSOをテストするには、サインアウトしてHEREプラットフォームにサインインします。IdPが正しく設定されていない場合、プラットフォームにアクセスできません。IdPマネージャーは一時的なアクセス回復プロセスを使用してIdPを再設定する必要があります。