Sto provando a seguire la semplice guida mvcGettingStarted. Ora, ho implementato entrambi i provider GoogleAuthentication
e FacebookAuthentication
e tutto funziona come previsto, posso effettivamente effettuare l'accesso e, se accedo con il mio server di identità, ho ricevuto anche le richieste di ruolo per utente. Mi stavo chiedendo, e se volessi mantenere tutte le richieste avanzate dai fornitori esterni? Semplice esempio. Ecco come il mio Facebook configurazione fornitore assomiglia:Thinktecture Identity Server v3 Come mantenere crediti da fornitori esterni?
var facebookOptions = new FacebookAuthenticationOptions() {
AuthenticationType = "Facebook",
Caption = "Sign in with Facebook",
AppId = "*****",
AppSecret = "****",
SignInAsAuthenticationType = signInAsType,
Provider = new FacebookAuthenticationProvider() {
OnAuthenticated = (context) => {
foreach (var x in context.User) {
context.Identity.AddClaim(new Claim(x.Key, x.Value.ToString()));
}
return Task.FromResult(context);
}
},
};
facebookOptions.Scope.Add("email");
facebookOptions.Scope.Add("public_profile");
facebookOptions.Scope.Add("user_friends");
app.UseFacebookAuthentication(facebookOptions);
In per ogni loop sto cercando di memorizzare tutti i Facebook sostiene in Identity, ma quando torno nel SecurityTokenValidated
richiamata, la mia identità hasn sono loro.
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions() {
Authority = "https://localhost:44302/identity/",
ClientId = "my_client",
Scope = "openid profile roles email",
RedirectUri = "https://localhost:44302/",
ResponseType = "id_token token",
SignInAsAuthenticationType = "Cookies",
UseTokenLifetime = false,
Notifications = new OpenIdConnectAuthenticationNotifications() {
SecurityTokenValidated = async context => {
//let's clean up this identity
//context.AuthenticationTicket.Identity doesn't have the claims added in the facebook callback
var nid = new ClaimsIdentity(
context.AuthenticationTicket.Identity.AuthenticationType,
Constants.ClaimTypes.GivenName,
Constants.ClaimTypes.Role);
........
È perché sto manipolando due identità diverse? C'è un modo giusto per ottenere ciò che sto cercando di fare? Grazie.
il collegamento risulta in 404 https://identityserver.github.io/Documentation/docs/advanced/userService.html – Rahatur
collegamento corretto ................... –