问题描述
lightSAML包正在使用此DOMDocument :: createElementNS,但是当namespaceURI
中包含多个参数时,它最终会中断。
URL
https://suitecrm_dev.com/index.PHP?action=Login&module=Users
仅适用于URL
https://mautic_dev.com/s/saml/login_check
createElementNS的官方文档中提供的示例是其中没有参数的URL。
所以这里的问题是如何正确发送URL,以使DOMDocument :: createElementNS不会出现此错误:
DOMDocument :: createElementNS():未终止的实体引用模块=用户
在lightSAML中出现问题的行:https://github.com/lightSAML/lightSAML/blob/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5/src/LightSaml/Model/AbstractSamlModel.php#L108
是的,我已经在LightSAML和SuiteCRM中提出了一个问题,但无济于事,我也在这里发布了一个问题,但决定重新创建一个问题,指出您导致所有这些问题的那一行。
解决方法
XML namespaces是URI
而不是URL
。
https://suitecrm_dev.com/index.php?action=Login&module=Users
是URL
。它找到资源,而:
https://mautic_dev.com/s/saml/login_check
是URI
,因为它标识资源。资源的物理位置可以在任何地方,甚至可以是URL
中一个完全不同的域。
SAML
核心仅处理身份。 SAML
元数据处理身份的位置。尽管可以将参数编码到URI中,但不建议这样做:
由于URI之间可能存在混淆的风险 如果取消引用,则在名称空间名称中使用%转义字符 强烈劝阻。
因此,最好考虑DOMDocument::createElementNS
代表哪个实体(身份),而不是信息将在哪里结束(位置)。