Я пытаюсь изменить образец IdentityServer4 AspNetIdentity, чтобы иметь возможность входить в систему как для локальных пользователей, так и для Google.
Я смог сделать это, добавив аутентификацию 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"
});
Как и ожидалось, на главной странице отображаются правильные утверждения пользователей:
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 не работает.
Я ценю, если кто-нибудь может сказать мне, что это такое.