Eu tenho um provedor de declarações do AD FS configurado e um SP do Shibboleth autenticando-se com êxito contra ele.
Quando eu entro no site protegido pelo Shibboleth, o índice mostra todos os cabeçalhos. Estou recebendo o UPN como esperado, mas não consigo obter outros atributos como sobrenome ou sAMAccountName para enviar.
Atualmente, tenho três regras de reivindicações:
Regra1:
Regra 2:
Regra3:
Nos logs da máquina do Shibboleth SP, não parece que o sn está sendo enviado como um atributo OID.
Se eu editar o atributo-map.xml e remover as referências ao eppn, obtenho o seguinte no log do shibd:
2015-06-23 11:29:08 INFO Shibboleth.AttributeExtractor.XML [1]: skipping unmapped SAML 2.0 Attribute with Name: urn:oid:1.3.6.1.4.1.5923.1.1.1.6
Não há menção semelhante à saída acima sobre o sobrenome ou sn no log do shibd, o que me faz acreditar que a regra "Transform SN" não está escrita corretamente.
INFORMAÇÕES ATUALIZADAS:
Consegui que o sobrenome funcionasse alterando a regra 1 da digitação manual em sn
para a seleção da opção de lista suspensa surname
.
O que preciso fazer para que outros campos do AD sem menu suspenso sejam selecionados para funcionar?
Estou adicionando campos como streetAddress
.
Para a regra 1, digitei manualmente o endereço de rua para o atributo LDAP e o tipo de declaração de saída.
Em seguida, adicionei uma regra adicional:
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress"]
=> issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");
Não sei se http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress
está correto ou não, mas o valor não está sendo mapeado.
Como obtenho atributos LDAP que não podem ser selecionados no menu suspenso para trabalhar?
Editar 2:
Esqueci de adicionar o resultado da seleção de View Rule Language (conforme solicitado por Matthieu abaixo):
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", "streetaddress"), query = ";userPrincipalName,sn,givenName,sAMAccountName,streetaddress;{0}", param = c.Value);
Parece que ele está recebendo apenas streetaddress
, enquanto todos os outros valores têm um esquema para eles. Como não há esquema, ele não corresponderá à regra de transformação para streetaddress
porque a instrução if está procurando por http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress
. O que devo fazer para valores que não são selecionados na seleção suspensa?
Eu descobri:
Alterei a regra de transformação para o seguinte:
c:[Type == "streetaddress"]
=> issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");
Em vez de procurar Type == Um esquema, acabei de colocar o endereço da rua. Então, no Shibboleth SP, eu mudei o Attribute-map.xml para adicionar isto:
<Attribute name="urn:oid:2.5.4.232" id="streetaddress"/>
OID acima foi arbitrário.