Я использую Angular интерфейс, .netcore API и identityserver4. Я тестирую AddSigningCredential (сертификат) как для среды разработки, так и для производственной среды. Работая нормально на моем локальном компьютере, после успешного входа в систему с учетной записи identityserver4, перенаправления с имени входа identityserver4 на font-end angular, можно сгенерировать токен доступа и получить доступ к данным API.
Но для моего производственного развертывания, хотя и может генерировать токен доступа, используя AddSigningCredential (сертификат), получая 500 внутренних ошибок сервера при доступе к API. Я что-то пропустил? и, пожалуйста, посоветуйте. Спасибо.
Я создаю самоподписанный сертификат в IIS и экспортирую его с закрытым ключом, а затем импортирую в личный магазин.
Поиск и передача этого сертификата в качестве параметра в AddSigningCredential () для развертывания. В моем файле identityserver4 Startup.cs
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false)
.Build();
string identityServerUrl = config.GetSection("UrlSetting").GetValue<string>("IdentityServerUrl");
string sslCertificateThumbprint = config.GetSection("UrlSetting").GetValue<string>("SSLCertificateThumbprint");
string sslCertificateSerialNumber = config.GetSection("UrlSetting").GetValue<string>("SSLCertificateSerialNumber");
if (Environment.IsDevelopment())
{
builder.AddDeveloperSigningCredential();
}
else
{
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = store.Certificates.Find(X509FindType.FindByThumbprint, sslCertificateThumbprint, false);
if (certCollection.Count > 0)
{
builder.AddSigningCredential(certCollection[0]);
}
}
мое значение токена доступа и информация о токене:
access_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjkxRUYzODkwMkNBNDE0QTRBOThCMjNGNEZBM0VFRjZFMkJCNkE5NUMiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJrZTg0a0N5a0ZLU3BpeVAwLWo3dmJpdTJxVncifQ.eyJuYmYiOjE1ODA4Nzg3OTQsImV4cCI6MTU4MDg4NTk5NCwiaXNzIjoiaHR0cHM6Ly8xMC4xLjE0MS4xNi9tYWNpZGVudGl0eSIsImF1ZCI6Im1hY2FwaSIsImNsaWVudF9pZCI6Im5nIiwic3ViIjoiNTk5Njk2M2EtZTA5Ni00MjE1LThjMzgtODA1Y2Y0OTZiOThlIiwiYXV0aF90aW1lIjoxNTgwODc4Nzk0LCJpZHAiOiJsb2NhbCIsIkFzcE5ldC5JZGVudGl0eS5TZWN1cml0eVN0YW1wIjoiSkFDWUtMSzZSMlhVUlQyTk1TUlVBSUlRNjdHT1dWQzUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbkBnbWFpbC5jb20iLCJuYW1lIjoiYWRtaW5AZ21haWwuY29tIiwiZW1haWwiOiJhZG1pbkBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJlbWFpbCIsIm1hY2FwaSJdLCJhbXIiOlsicHdkIl19.c-0sjA4k5kJZXTMhTgH_Mo0S5X9JVdCfk2D3FpK4aAQ7I4ej6p1pI1q-ybhyLYO_sNdMDhWpd6_xulpdRhnTOjQauhGjcno3h-Wanm8LHn6Nhl3m_0VqjBK96c5gEZRJI_qstCKFISL9YWMhPAEXc_YusDtq7vFZZGnx1zdD7sER3YHBuvpLreTRScOzWuhIEE4RTLipmyvyAqrvbAYWwQ5M_u8EjB2lvP5MnhHY9RAr1LqnjOeiKffGMe7RcUaoZDnQcCVT-38hYfZxS9ETcKYDTT_C-CXvOUyGV9EwGJSDbxqHvZcjZ4grPmVU5-lKK8QkQPHjgQagzWHRhhDknA&token_type=Bearer&expires_in=7200&scope=openid%20profile%20email%20testapi&state=8g8QZfc4rnJBoUeSvMEjU6DwY3dASb7Yp9uJGpOe&session_state=1trGZTtEqsh9pqPlPDNYFEIvDhilDrvibON6V11yGok.KJVy1w-xkxw9iRtT-bh9Ag'
API защищен с использованием identityserver4 и использованием angular -oauth2-oid c для соединения angular и сервера идентификации, тип предоставления неявен.
Я протестировал как AddDeveloeprSigningCredential (), так и AddSigningCredential () в моем местном. Я думаю, что работает нормально, когда я работаю с исходным кодом, например, если я не передал значение токена доступа из интерфейсного angular приложения в бэкэнд API, я получаю HttpResponseStatusCode 401 и не могу получить мои данные API.
Если я передал значение токена доступа из внешнего интерфейса angular в бэкэнд API, я могу получить данные API без каких-либо ошибок.
Для развертывания, когда я проверяю свой серверный журнал,
2020-02-05 08:21:39 10.1.121.11 GET /webapi/api/student/availablestudent type=P1&nrcno=&filtertype=S 443 - 10.1.121.11 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 https://10.1.121.11/TrainingManagementSystem/trainingmanagementsystem/person/search 500 0 0 49