У меня есть 2 приложения asp.net core 3.1. один из них - IdentityServer, а другой - Клиент, благодаря чему метод действия OpenID Connect to IdentityServer, если имеет атрибут авторизации.
- В моем IdentityServer ничего странного нет. Есть только несколько клиентов и пользователей InMemory:
// User 1
{
"SubjectId": 1,
"Username": "MyName",
"Password": "MyPassword"
}
// Client 1
{
"ClientId": "ClientID",
"ClientName": "This is MVC1 Client",
"ClientSecrets": [{
"Value": "ClientSecret"
}],
"AllowedGrantTypes": [ "authorization_code" ],
"RedirectUris": [ "http://localhost:7573/signin-oidc" ],
"PostLogoutRedirectUris": [ "http://localhost:7573/signin-oidc" ],
"AllowedScopes": [
"openid",
"profile",
"address",
"email",
"phone"
],
"RequirePkce": true,
"AllowPlainTextPkce": false
}
- А это мое клиентское приложение:
services
.AddAuthentication(options => {
options.DefaultScheme = "Cookie";
options.DefaultChallengeScheme = "OIDC";})
.AddCookie("Cookie")
.AddOpenIdConnect("OIDC", options => { // This config used for Authentication
options.SignInScheme = "Cookie";
options.SignOutScheme = "Cookie";
options.Authority = "http://192.168.34.33:80"; // My remote Server
options.RequireHttpsMetadata = false;
options.ClientId = "MVC1";
options.ClientSecret = "MVC1";
options.ResponseType = "code";
options.UsePkce = true;
options.SaveTokens = true;
options.ResponseMode = "query";
options.CallbackPath = "/signin-oidc";
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.Scope.Add("address");
options.Scope.Add("phone");
});
And This Configuration WORK Well with HTTP
Но НЕ HTTPS
when i press login, it work ok and after authentication, redirect me back to the client
Проблема в том, когда я меняю Полномочия URL на HTTPS, я получаю сообщение об ошибке удаленного сертификата, потому что в моем IIS нет действующего сертификата
Итак:
- Я создаю самоподписанный сертификат в своем IIS и привязываю его к своему проекту:
А также я добавляю этот сертификат в мои доверенные корневые центры сертификации клиентского компьютера:
Я меняю
options.Authority
иoptions.RequireHttpsMetadata
на это:
options.Authority = "https://192.168.34.33:4430"; // My remote Server
options.RequireHttpsMetadata = true;
Now when i click on Privacy button in my client application (Authorize action method), i see certificate error:
Пожалуйста, помогите мне. Мне действительно нужна помощь. Спасибо :))