【问题标题】:Is it possible for Keycloak to be used as an IDP and a PHP application as an SP?Keycloak 是否可以用作 IDP 和 PHP 应用程序用作 SP?
【发布时间】:2021-01-20 04:53:40
【问题描述】:

我将this PHP project 导入 Eclipse(master 分支;demo1 文件夹的内容)。

目标:我想在 PHP 中使用 Keycloak 和 SAML 集成登录 SSO 演示。

首先,Keycloak 是否可以用作身份提供者 (IDP) 和 PHP 应用程序作为服务提供者 (SP)?

我已经配置了一个设置文件和 Keycloak 的配置。但是我没有在我的 Eclipse 项目中的任何地方添加客户端 ID;我不知道在哪里添加它!

<?php
    
$spBaseUrl = 'http://localhost:8080'; //or http://<your_domain>
    
//The ACS URL is a combination of the Secure Token Server subsystem address, its port number for handling SAML messages, the SAML binding,
//and any necessary information that is specific for CIC or ICWS.


$settingsInfo = array(
    'sp' => array(
        'entityId' => $spBaseUrl.'/demo1/metadata.php',
        'assertionConsumerService' => array(
            'url' => $spBaseUrl.'/demo1/index.php?acs',
        ),
        'singleLogoutService' => array(
            'url' => $spBaseUrl.'/demo1/index.php?sls',
        ),
        'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
    ),
    'idp' => array(
        'entityId' => 'http://localhost:8080/auth/realms/Lifetrenz',
        'singleSignOnService' => array(
            'url' => 'http://localhost:8080/auth/realms/Lifetrenz/protocol/saml',
        ),
        'singleLogoutService' => array(
            'url' => 'http://localhost:8080/auth/realms/Lifetrenz/protocol/saml',
        ),
        'x509cert' => 'MIICoTCCAYkCBgF0eK4PUzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAlMaWZldHJlbnowHhcNMjAwOTEwMTU0MDA3WhcNMzAwOTEwMTU0MTQ3WjAUMRIwEAYDVQQDDAlMaWZldHJlbnowggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmHuIp66rwzd8pkm8nQ/PfMt6JUKu1VvkgrSpmMKkYcnbyWzMkOXV96VQBQLfMFZ+7OQlmGreCVASjjNaNhnDwF2KUU+CzJDdxAD8fj2DfGKsaiR5mZLlld5Fxl2dQ7Vn97gMRz7tb/+pW1Ih0ckYSGQwe4frWUZJxahZRUXtsJkj14pSib8u2J7BRJgrDhQMDFHAL1eyPZxKsXFdH6eB2FtWEJE90Zy6cshe5xFd+fMFY2vCPrbGH9FmcRjq004XQ9QdbL52paCnKoK2Vh7zwi80IXxjt8STUyf9Qnllzsmn37EFS8ZOzWoSy9dwqdHpF6BICBBYZZ2HIHCNXA1E9AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAAnvVLS5Tk5cE6e4IO3FwVbAvnHFi3nFHipnIqmfHf63Gy25b/mCtVZ9tDSA2tGCyULB0Zeq4B518/GJo0423lMw/R0dTkQnXuDPZc8O7MQbNg2fnNqNiamsv21RhDp3r998Un9MrniCuR1+vZyYy2urdLfF/BvvWVpVWtHvXgT1VI5lzy+WBJM08FO6rHdHiqVgWLf+xxXunaQA5gcno2Af6XzPsIHTFok6VviBZqJ6vqXwITfb9S4zwcqr0rgqeqGJ6w7qPZeC9UZw0EjtUqnjrnDZ6PxXjCXMdy4PXN0kEls1jMvbTS+LIlR1K3RlfXW0/K6Z8Ge/c+WAN+yXS30=',
    ),
);

但是当我点击 index.php 并重定向到 Keycloak 登录提供程序页面时,我收到“未知登录请求者”。

显然,因为我没有配置 Keycloak 客户端 ID!

【问题讨论】:

标签: php keycloak saml saml-2.0 idp


【解决方案1】:

Keycloak 中的Client ID 需要等于您的站点/元数据中的entityId

这意味着您需要将 Keycloak(客户端部分)配置为与元数据同步。如果您的 entityId 是元数据 URL,则您的 Keycloak Client ID 需要是相同的 URL。

官方指南:https://www.keycloak.org/docs/latest/server_admin/#saml-clients

【讨论】:

  • 我的一些未解之谜:除了PHP Code和Keycloak配置外,是否需要其他第三方IDP/SP?像 SimpleSAMLPhp?奥克塔之类的?或者 Keycloak 可以用作 IDP,PHP 应用程序可以用作 SP?
  • 正如您所说的 Keycloak 是您的 IDP,您使用 php-saml 的应用程序是 SP。如果配置同步,它们可以并且将会工作。因为双方都有自己的安全验证。您需要做的就是正确配置这两个部分。
  • 如果可能的话,请检查github.com/onelogin/php-saml/tree/master/demo1,我也提到了同样的问题,问题是在哪里使用client-id?
  • 您有 Keycloak 网站吗?您是否使用测试站点元数据对其进行了配置?
  • 我在本地运行 Keycloak。示例演示中已经存在元数据。我配置的 Ans 设置文件。
猜你喜欢
  • 2020-08-19
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 2020-12-22
  • 2015-03-14
  • 2017-06-25
  • 2016-09-16
  • 2013-03-27
相关资源
最近更新 更多