Configurando o ADFS para passar o SID como reivindicação

1

Eu tenho um sistema em que estamos usando o ADFS como provedor de identidade para fornecer logon único com o appliacation .NET baseado em WIF. Tudo funciona bem e somos capazes de passar todas as reivindicações como precisamos, por exemplo, aqui é a regra para passar o sobrenome:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 
Issuer == "AD AUTHORITY"]  
=> issue(store = "Active Directory", 
types = ("http://example.com/identity/claims/portal/lastname"), 
query = ";sn;{0}", param = c.Value);

No entanto, agora, preciso adicionar duas regras com as quais tenho problemas. A primeira é passar o SID e a outra é passar o nome da conta do SAM (domínio \ usuário). Eles não existem na lista predefinida no assistente de configuração de declaração do ADFS e eu estava tentando escrever regras personalizadas para eles, mas não consigo fazer com que eles funcionem.

Você poderia me indicar como eu poderia extrair essas propriedades se fosse realmente possível?

Eu peço desculpas Se eu estraguei alguma nomenclatura, eu costumo trabalhar no lado do código das coisas que entram no AD somente se eu não tiver outra escolha :) Todas as correções são bem vindas.

    
por Sebastian K 24.03.2015 / 20:17

2 respostas

3

Passe o objectguid em vez do SID para obter um ID verdadeiramente imutável para um objeto AD.

Algo parecido com:

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/nameidentifier"), query = ";objectGUID;{0}", param = c.Value);
    
por 25.03.2015 / 17:04
2

OK, eu consegui descobrir, depois de encontrar esta página. Eu estava basicamente usando nomes de atributos incorretos, no meu caso eu deveria estar usando objectSid e sAMAccountName . Para minha surpresa, o último também não vem com a parte do domínio. Então, caso isso ajude alguém, aqui está a regra de amostra passando o SID como uma reivindicação:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 
Issuer == "AD AUTHORITY"]  
=> issue(store = "Active Directory", 
types = ("http://example.com/identity/claims/portal/lastname"), 
query = ";objectSid;{0}", param = c.Value);
    
por 24.03.2015 / 21:00

Tags