Sto provando a creare un sistema che funzioni con ADFS e attestazioni. Al momento, questa è solo un'implementazione "giocattolo".Creazione del token di delega - impossibile creare SecurityTokenService
Ho creato un'applicazione Web MVC molto semplice, l'ho configurata utilizzando la procedura guidata "Identità e accesso ..." in Visual Studio per comunicare con un server ADFS 2.0 e distribuirla su un server IIS. Tutto funziona bene e posso esaminare ed elencare le richieste ricevute.
Il passaggio successivo è la creazione di un servizio REST basato su API Web (che rappresenti i servizi di back-end da cui dipenderà l'applicazione MVC), quindi desidero passare le credenziali a tale server back-end in modo che può prendere appropriate decisioni di autorizzazione.
Quindi, per me è il primo passo per creare il token di delega (e spero, quindi, spero di capire cosa fare in merito alla classe HttpClient
per fare il resto della chiamata). Ho questo:
//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);
Ma, il problema è che SecurityTokenService
è astratta. Non riesco a trovare alcun tipo derivato da questa classe né in System.IdentityModel
né in System.IdentityModel.Services
, e quanto sopra non include alcun riferimento al server ADFS che ovviamente dovrò fornire a un certo punto.
Naturalmente, potrei anche scendermi completamente lungo la strada sbagliata, o sto solo colpendo un ostacolo minore e non vedendo uno molto più grande che si profila in lontananza, quindi qualsiasi consiglio su ciò sarebbe apprezzato anche.
ho guardato, per esempio, Identity Delegation Scenario, ma che utilizza CreateChannelActingAs
, che non credo che sta andando a lavorare quando sto parlando con un servizio di riposo (o sarà?), E inoltre non sembra applicabile a .NET 4.5.
Non voglio implementare un servizio token di sicurezza: voglio parlare con quello di ADFS e ottenere il rilascio di un token di delega: non riesco a trovare un modo per farlo. –