Ciao,
mi si e' presentato questo problema con l'autenticazione OWIN.
Una volta verificato che l'utente e' un utente del mio sistema, tramite un servizio esterno, procedo con la pipeline OWIN
// Definizione della ClaimsIdentity
var oAuthIdentity = new ClaimsIdentity(
new[] {
new Claim(ClaimTypes.Name, logInModel.Username),
new Claim("http://schemas.myapp.com/claims/userprofile/CustomINformation", "customInformation")
}, "ApplicationCookie");
// Owin Context
var owinContext = this.Request.GetOwinContext();
// Athentication Manager
var authenticationMananger = owinContext.Authentication;
// SignIn
authenticationManager.SigIn(oAUthIdentity);
Ed effettivamente ora l'utente ha accesso all'Area Riservata.
In un successivo Controller avrei la necessita' di recuperare le informazioni salvate nella Claims collection dello User:
var claimsIdentity = this.User.Identity as ClaimsIdentity;
Quello che mi aspettavo, e che funzionava (!!!), e' che claimsIdentity fosse di tipo System.Security.Claims.ClaimsIdentity invece me lo ritrovo di tipo System.Security.Principal.WindowsIdentity, ma cosa ancora peggiore, con la claims collection vuota.
So che System.Security.Principal.WindowsIdentity deriva da System.Security.Claims.ClaimsIdentity dalla versione 4.5 del .NET Framework, ma non riesco a capire perche' ho questo comportamento "ambiguo", e soprattutto perche' i claims non siano salvati nel Cookie dello User.
Qualche suggerimento?
Grazie
Alberto