Я пытаюсь изменить образец IdentityServer4 AspNetIdentity, чтобы иметь возможность входить в систему как от локальных созданных пользователей, так и от Google.Использование IProfileService при входе в систему Google OAuth
я был в состоянии сделать это, добавив аутентификации Google:
app.UseIdentity();
app.UseIdentityServer();
var cookieScheme = app.ApplicationServices.GetRequiredService<IOptions<IdentityOptions>>().Value.Cookies.ExternalCookieAuthenticationScheme;
// Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715
app.UseGoogleAuthentication(new GoogleOptions
{
AuthenticationScheme = "Google",
SignInScheme = cookieScheme,
ClientId = "client_id",
ClientSecret = "client_secret"
});
Как и ожидалось мнение Home показывает правильные требования пользователя:
sub
c51da331-0348-45dd-352f-08d4526f6266
name
[email protected]
AspNet.Identity.SecurityStamp
568a167f-a431-4f70-ba66-918f99e95eef
idp
Google
amr
external
auth_time
1486815555
Когда пользователь подписывает в первый раз с помощью учетной записи Google Я добавляю некоторую информацию в базу данных, и я думал, что могу добавить их в претензии пользователей, используя специальную реализацию IProfileService и настроя IdentityServer для использования моего настраиваемого IProfileService:
var builder = services.AddIdentityServer();
builder.AddTemporarySigningCredential();
builder.AddConfigurationStore(b => b.UseSqlServer(connectionString, options => options.MigrationsAssembly(migrationAssembly)));
builder.AddOperationalStore(b => b.UseSqlServer(connectionString, options => options.MigrationsAssembly(migrationAssembly)));
builder.AddAspNetIdentity<MyUser>();
builder.AddProfileService<MyCustomProfileService>();
Но теперь, когда я перехожу на главную страницу, пользовательские заявки остаются неизменными, и даже метод GetProfileDataAsync не ударит.
Я ценю, если кто-нибудь скажет мне, что это такое.