Estoy intentando crear un sistema que trabaje con ADFS y notificaciones. Por el momento, esto es solo una implementación de "juguete".Crear token de delegación: no se puede crear un SecurityTokenService
He creado una aplicación web MVC muy simple, la configuré utilizando el asistente "Identity and Access ..." en Visual Studio para hablar con un servidor ADFS 2.0 y la implementé en un servidor IIS. Todo funciona bien, y puedo examinar y enumerar las reclamaciones recibidas.
El siguiente paso es crear un servicio REST basado en API web (que represente servicios de back-end de los que la aplicación MVC va a depender), por lo que quiero pasar las credenciales a ese servidor de fondo para que puede tomar decisiones de autorización adecuadas.
Así que el primer paso es para mí crear el token de delegación (y luego, con suerte, averiguaré qué hacer con él en términos de la clase HttpClient
para hacer la llamada de reposo). Tengo esto:
//We need to take the bootstrap token and create an appropriate ActAs token
var rst = new RequestSecurityToken
{
AppliesTo = new EndpointReference("https://other-iis.example.com/Rest"),
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Symmetric,
ActAs = new SecurityTokenElement(((BootstrapContext)((ClaimsIdentity)User.Identity).BootstrapContext).SecurityToken)
};
var sts = new SecurityTokenService(); //This line isn't valid
var resp = sts.Issue(System.Threading.Thread.CurrentPrincipal as ClaimsPrincipal, rst);
embargo, la cuestión es que SecurityTokenService
es abstracto. No puedo encontrar ningún tipo derivado de esta clase en System.IdentityModel
ni System.IdentityModel.Services
, y lo anterior no incluye ninguna referencia al servidor ADFS que obviamente tendré que proporcionar en algún momento.
Por supuesto, también puedo estar tomando una ruta equivocada, o simplemente estoy golpeando un obstáculo menor y no viendo uno mucho más grande en la distancia, así que cualquier consejo sobre eso sería apreciado también.
He mirado en, por ejemplo, Identity Delegation Scenario, pero que utiliza CreateChannelActingAs
, que no creo que se va a trabajar cuando estoy hablando a un servicio de descanso (o lo hará?), Y tampoco parece aplicarse a .NET 4.5.
No quiero implementar un STS - Quiero hablar con el ADFS y obtener un token de delegación - Parece que no puedo encontrar una manera de hacerlo. –