在使用SimpleSAML时,如何控制为SP生成的SAML元数据属性?

时间:2013-08-20 13:13:18

标签: php authentication saml saml-2.0

我在尝试SimpleSAML邮件列表,检查文档,并花费大量时间阅读SimpleSAML源代码后,我在这里问这个问题,我希望这里有人可以帮助解决问题。

对于SimplesSAML我还是有些新手,请跟我说 - 我完全有可能对SAML或图书馆做出一些基本的误解。

当定义元数据发送到依赖服务提供商时,如何控制xsi:type的{​​{1}}您想要包含的属性?

例如,假设我需要在现有的Attribute语句中生成这样的xml以供服务提供者接受:

attributeValue

我的理解是我需要编写一个特定的auth模块,比如提供的示例,因此生成了正确的属性,并可能使用AttributeMap获取一个表单的属性,并确保它们映射到表单这是可以接受的。

所以,我已按照here概述的方式整理了一个自定义身份验证模块。

以下是<saml2:Attribute FriendlyName="Firstname" Name="MDS_firstname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" xsi:type="saml2:AttributeType" > <saml2:AttributeValue ida:From="2013-08-16" ida:Language="en-GB" ida:To="2013-08-16" ida:Verified="true" xmlns:ida="http://www.some-organisation.org.uk/resource-library/ida/attributes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ida:PersonNameType" > Joe </saml2:AttributeValue> </saml2:Attribute> 中自定义模块的代码/lib

sspmod_custom_Auth_Source_CustomAuth

以下是www中的代码,该代码用作发送经过身份验证的用户的端点,用于执行该操作:

  class sspmod_custom_Auth_Source_CustomAuth extends SimpleSAML_Auth_Source {

    // lots of code here

    public function finalStep(&$state) {

     // fetch information about user Joe, after authentication to p

      $attributes['MDS_firstname']   = array('Joe');

      $state['Attributes'] = $attributes;

    }

  }

当我这样做时,我最终生成了一些xml属性有效负载,看起来有点像这样:

  <?php

  /**
   * @file
   * The resume endpoint.
   * Assume a user is sent here with their state_id in the key `$_REQUEST['auth']`
   */


  $state_id = $_REQUEST['auth'];

  $state = SimpleSAML_Auth_State::loadState($state_id, sspmod_custom_Auth_Source_customAuth::STAGEID);

  $source_id = $state[sspmod_custom_Auth_Source_customAuth::AUTHID];

  // fetch original session
  $source = SimpleSAML_Auth_Source::getById($source_id);

  // add attributes to metadata
  $source->finalStep($state);

  // generate XML payload and send to service provider as usual
  SimpleSAML_Auth_Source::completeAuth($state);

  ?>

如何在此处向 <saml:Attribute Name="MDS_firstname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" > <saml:AttributeValue xsi:type="xs:string"> Joe </saml:AttributeValue> </saml:Attribute> 添加额外的属性,因此我可以添加saml:Attribute之类的额外位,等等?

至关重要的是,我如何更改FriendlyName的{​​{1}}呢?

我查看了解释auth procs和过滤器的文档,但他们似乎并不关心我在这里更改部分。

有什么建议吗?

谢谢,

克里斯

0 个答案:

没有答案