Devo admitir imediatamente que não sou um programador de verdade. Ou seja, quando eu era real - no sentido de receber dinheiro apenas para escrever programas. No entanto, isso foi há mais de quinze anos atrás, escrevi programas, de acordo com a moda da época, principalmente em Delphi (bem, ou um pouco mais cedo - também em C / C ++) - em resumo, sobre o que está agora, bem, não está na moda e não está em demanda. Nos últimos quinze anos, tenho ganho quase exclusivamente administração de sistemas, principalmente administrando soluções da Microsoft, especialmente o Active Directory e o MS Exchange. E a única coisa que dizia respeito à programação nessa atividade era escrever scripts, por assim dizer, em uma linguagem de programação chamada Powershell.
No entanto, as perspectivas brilhantes da administração do sistema em termos de extração de pĂŁo com manteiga e caviar desapareceram de alguma maneira nas Ăşltimas dĂ©cadas e meia, e decidi me lembrar do antigo ofĂcio. Mas, ao mesmo tempo, decidi tentar nĂŁo me afastar muito de tĂłpicos familiares, de modo a usar o conhecimento acumulado. Em particular, o conhecimento dos produtos Microsoft com os quais lido há quinze anos. Para a bagagem de programação antiga, como o Delphi, nĂŁo está mais na moda, vocĂŞ nĂŁo gosta muito, mas realmente nĂŁo queria ir para fornecedores de moda, mudando o Powershell para JavaScript, a fim de competir com as listas brancas recĂ©m-criadas e " os encantos ”de uma linguagem de script - como a impossibilidade de detectar erros no estágio de compilação - eles me levaram de volta ao Powershell.
Mas entĂŁo eu encontrei a dificuldade. A Microsoft, como vocĂŞ sabe, há algum tempo decidiu se tornar uma empresa em nuvem. E por isso, ela começou a direcionar seus usuários para as nuvens, pelos quais claramente decidiu matar todos os seus maravilhosos produtos comerciais locais, como o meu amado Exchange. E isso automaticamente torna o desenvolvimento de programas relacionados a esses produtos desprovido de qualquer perspectiva. No entanto, depois de pensar, achei, para mim, um compromisso aceitável: escreva uma extensĂŁo para o Serviço de Federação do Active Directory (AD FS). Como esse serviço, usado em vários cenários de autenticação e autorização em sistemas distribuĂdos, tem uma chance muito maior de sobreviver no mundo moderno do que soluções personalizadas para uso puramente “local”. Em particular,pode ser usado para autorizar o acesso a aplicativos na nuvem da Microsoft com base na autenticação no Active Directory no local. Portanto, o uso de conhecimento e experiĂŞncia com este serviço (que eu tenho um pouco) pode ter pelo menos alguma perspectiva para o futuro.
, , . , , , - . , .
- , Microsoft Windows Server 2012 R2, ADFS , , , , , , . , . , , . , — Microsoft - , .
, , .
, . , , . : .NET CLR C#, , . , .NET Powershell , . , , , ( ) . — - - - Microsoft GitHub - SMS — , , - , , , API , — , .
, , .
: , ADFS HTML , , , , . , , , , , , : « ?» , , «, » ( ADFS hidden input, ), , — , . , ADFS, — null,
(claims) ( — URI) — ( URI, ). , . — .
. - , . : URI URL, ( ) urn. GAC ADFS . . , HTML, . .
, ADFS , , ID 364 «Microsoft.IdentityServer.RequestFailedException: No strong authentication method found for the request...», - , , . , ADFS , . , ( , ADFS URL ) — . , .
, , , ADFS , , . , , — , , , . : , , — , , , — . , — .
— — . , , — , , — : , , . . ( — ) . , : - , ( ) , «!», . , ( ): , , , , , . , . .
— -. — ( , ). — , . GitHub — , , API . - - — . URI — . , , , , ( ). , — . , ,
, : ( ) «http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod», (, ) «» , : «https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod». , , - . , , , .
. - Microsoft, : . - , - http https:
URI , URL, URL . — . - Microsoft, . : 100% , — , - . ( — ), , .
P.S.: , . - — , .