diff --git a/web/ASC.Web.Client/public/locales/ru/SingleSignOn.json b/web/ASC.Web.Client/public/locales/ru/SingleSignOn.json
index 4e03b039ca..c39194c867 100644
--- a/web/ASC.Web.Client/public/locales/ru/SingleSignOn.json
+++ b/web/ASC.Web.Client/public/locales/ru/SingleSignOn.json
@@ -9,23 +9,23 @@
"CustomEntryButton": "Пользовательская надпись для кнопки входа:",
"CustomEntryButtonPlaceholder": "Single Sign-on",
"CustomEntryTooltip": "Надпись для кнопки, которая используется для входа на портал с помощью сервиса Single Sign-on",
- "DecryptStatements": "Расшифровывать утверждения",
"DownloadMetadataXML": "Скачать XML-файл метаданных поставщика сервиса",
"EmptyFieldErrorMessage": "Поле не заполнено",
- "EndpointURL": "URL-адрес конечной точки единого входа IdP:",
- "EndpointURLTooltip": "URL-адрес, используемый для единого входа на стороне поставщика учетных записей",
+ "Encryption": "шифрование",
"FirstName": "Имя",
+ "GenerateCertificate": "Сгенерировать новый самоподписанный сертификат ",
"Hide": "Скрыть",
"HideAdditionalParameters": "Скрыть дополнительные параметры",
"HideAuthPage": "Скрыть страницу аутентификации",
"LastName": "Фамилия",
"Location": "Местоположение",
+ "LogoutEndpointUrl": "URL-адрес конечной точки единого выхода IdP:",
+ "LogoutEndpointUrlTooltip": "URL-адрес, используемый для единого выхода на стороне поставщика сервиса",
"NameIDFormat": "Формат NameID:",
"NewCertificate": "Новый сертификат",
"OpenCertificate": "Открытый сертификат:",
- "OpenCertificates": "Открытые сертификаты поставщика учетных записей: ",
- "OpenCertificatesTooltip": "Открытые сертификаты поставщика учетных записей, используемые или для проверки, или для расшифровки (или для того и другого) запросов и ответов от поставщика учетных записей",
"Or": "или",
+ "PrivateKey": "Закрытый ключ:",
"ProviderCertificates": "Сертификаты поставщика сервиса",
"ProviderURL": "Идентификатор сущности поставщика учетных записей:",
"ProviderURLTooltip": "Идентификатор сущности поставщика учетных записей (URL-адрес поставщика)",
@@ -40,10 +40,10 @@
"ServiceProviderSettings": "Настройки поставщика сервиса",
"Show": "Показать",
"ShowAdditionalParameters": "Показать дополнительные параметры",
- "SignAuthRequest": "Подписывать запросы аутентификации",
- "SignExitRequest": "Подписывать запросы выхода",
- "SignResponseRequest": "Подписывать ответы выхода",
- "SigningAlgorithm": "Алгоритм подписи:",
+ "SignOnEndpointUrl": "URL-адрес конечной точки единого входа IdP:",
+ "SignOnEndpointUrlTooltip": "URL-адрес, используемый для единого входа на стороне поставщика учетных записей",
+ "Signing": "подпись",
+ "SigningAndEncryption": "подпись и шифрование",
"StandardDecryptionAlgorithm": "Стандартный алгоритм расшифровки:",
"Title": "Должность",
"TurnOnSSO": "Включить аутентификацию с помощью технологии единого входа",
@@ -51,7 +51,21 @@
"TurnOnSSOTooltip": "Включите эту опцию, если вы хотите автоматически добавить на портал пользователей из сервиса SSO",
"UploadXML": "Для автоматического заполнения необходимых полей загрузите метаданные из XML-файла",
"UploadXMLPlaceholder": "URL адрес XML-файла метаданных",
+ "UsedFor": "Использовать для",
"emailErrorMessage": "Неверный формат электронной почты",
+ "idpAuthRequest": "Проверять подпись ответов аутентификации",
+ "idpCertificates": "Открытые сертификаты поставщика учетных записей: ",
+ "idpCertificatesTooltip": "Открытые сертификаты поставщика учетных записей, используемые или для проверки, или для расшифровки (или для того и другого) запросов и ответов от поставщика учетных записей",
+ "idpSignExitRequest": "Проверять подпись запросов выхода",
+ "idpSignResponseRequest": "Проверять подпись ответов выхода",
+ "idpSigningAlgorithm": "Стандартный алгоритм проверки подписи:",
"phoneErrorMessage": "Неверный формат номера телефона",
+ "spAuthRequest": "Подписывать запросы аутентификации",
+ "spCertificates": "Сертификаты поставщика сервиса",
+ "spCertificatesTooltip": "Сертификаты поставщика сервиса, используемые для подписи и шифрования запросов и ответов от поставщика сервиса",
+ "spDecryptStatements": "Расшифровывать утверждения",
+ "spSignExitRequest": "Подписывать запросы выхода",
+ "spSignResponseRequest": "Подписывать ответы выхода",
+ "spSigningAlgorithm": "Алгоритм подписи:",
"urlErrorMessage": "Недопустимый URL-адрес"
-}
\ No newline at end of file
+}
diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/Certificates.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/Certificates.js
new file mode 100644
index 0000000000..1f095a915a
--- /dev/null
+++ b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/Certificates.js
@@ -0,0 +1,123 @@
+import React from "react";
+import { observer } from "mobx-react";
+
+import Box from "@appserver/components/box";
+import Button from "@appserver/components/button";
+import HelpButton from "@appserver/components/help-button";
+import Text from "@appserver/components/text";
+
+import AddIdpCertificateModal from "./sub-components/AddIdpCertificateModal";
+import AddSpCertificateModal from "./sub-components/AddSpCertificateModal";
+import CheckboxSet from "./sub-components/CheckboxSet";
+import HideButton from "./sub-components/HideButton";
+import PropTypes from "prop-types";
+import SimpleComboBox from "./sub-components/SimpleComboBox";
+import {
+ decryptAlgorithmsOptions,
+ verifyAlgorithmsOptions,
+} from "./sub-components/constants";
+
+const Certificates = ({ FormStore, t, provider }) => {
+ let prefix = "";
+
+ switch (provider) {
+ case "IdentityProvider":
+ prefix = "idp";
+ break;
+ case "ServiceProvider":
+ prefix = "sp";
+ }
+
+ return (
+
+
+
+ {t(`${prefix}Certificates`)}
+
+
+
+
+
+
+ {prefix === "idp" && (
+ <>
+
+
+ >
+ )}
+
+ {prefix === "sp" && (
+ <>
+
+
+ >
+ )}
+
+
+
+
+
+
+ {provider === "IdentityProvider" && (
+ <>
+
+ >
+ )}
+
+ {provider === "ServiceProvider" && (
+ <>
+
+
+
+ >
+ )}
+
+ );
+};
+
+export default observer(Certificates);
+
+Certificates.PropTypes = {
+ provider: PropTypes.oneOf(["IdentityProvider", "ServiceProvider"]),
+};
diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpCertificates.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpCertificates.js
deleted file mode 100644
index 736b44c41c..0000000000
--- a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpCertificates.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import React from "react";
-import { observer } from "mobx-react";
-
-import Box from "@appserver/components/box";
-import Button from "@appserver/components/button";
-import HelpButton from "@appserver/components/help-button";
-import Text from "@appserver/components/text";
-
-import AddCertificateModal from "./sub-components/AddCertificateModal";
-import HideButton from "./sub-components/HideButton";
-import SimpleCheckbox from "./sub-components/SimpleCheckbox";
-import SimpleComboBox from "./sub-components/SimpleComboBox";
-import {
- decryptAlgorithmsOptions,
- verifyAlgorithmsOptions,
-} from "./sub-components/constants";
-
-const IdpCertificates = ({ FormStore, t }) => {
- return (
-
-
-
- {t("OpenCertificates")}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default observer(IdpCertificates);
diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpSettings.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpSettings.js
index 1cdd529602..9522a683cc 100644
--- a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpSettings.js
+++ b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/IdpSettings.js
@@ -40,19 +40,19 @@ const IdpSettings = ({ FormStore, t }) => {
{t("Binding")}
{
+
+
+ {t("Binding")}
+
+
+
+
+
{
-
+
+
+
diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledModalDialog.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledModalDialog.js
new file mode 100644
index 0000000000..6e2a8f4543
--- /dev/null
+++ b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledModalDialog.js
@@ -0,0 +1,30 @@
+import styled from "styled-components";
+
+import ModalDialog from "@appserver/components/modal-dialog";
+
+const StyledModalDialog = styled(ModalDialog)`
+ .generate {
+ font-weight: 600;
+ }
+
+ .text-area {
+ margin-top: 4px;
+ margin-bottom: 16px;
+
+ &-label {
+ font-weight: 600;
+ margin-bottom: 5px;
+ }
+ }
+
+ .field-label-icon {
+ margin-bottom: 5px;
+ }
+
+ .ok-button {
+ padding: 8px 26px;
+ margin-right: 10px;
+ }
+`;
+
+export default StyledModalDialog;
diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledSsoPageContainer.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledSsoPageContainer.js
index 01b61c6bc6..e95a131e86 100644
--- a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledSsoPageContainer.js
+++ b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/styled-containers/StyledSsoPageContainer.js
@@ -80,6 +80,16 @@ const StyledSsoPage = styled.div`
max-width: 404px;
width: 100%;
}
+
+ .xml-upload-file {
+ .text-input {
+ display: none;
+ }
+
+ .icon {
+ position: static;
+ }
+ }
`;
export default StyledSsoPage;
diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/sub-components/AddCertificateModal.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/sub-components/AddIdpCertificateModal.js
similarity index 67%
rename from web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/sub-components/AddCertificateModal.js
rename to web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/sub-components/AddIdpCertificateModal.js
index 424ba2a5be..e06ff0b1e4 100644
--- a/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/sub-components/AddCertificateModal.js
+++ b/web/ASC.Web.Client/src/components/pages/Settings/categories/integration/SingleSignOn/sub-components/AddIdpCertificateModal.js
@@ -1,41 +1,33 @@
import React from "react";
-import styled from "styled-components";
import { observer } from "mobx-react";
import Box from "@appserver/components/box";
import Button from "@appserver/components/button";
import ModalDialog from "@appserver/components/modal-dialog";
+import StyledModalDialog from "../styled-containers/StyledModalDialog";
import Text from "@appserver/components/text";
import TextArea from "@appserver/components/textarea";
+import { addArgument } from "../../../../utils";
-const StyledModalDialog = styled(ModalDialog)`
- .text-area {
- margin-top: 12px;
- }
-
- .ok-button {
- margin-right: 10px;
- }
-
- .text-area-label {
- margin-top: 5px;
- }
-`;
-
-const AddCertificateModal = ({ FormStore, t }) => {
+const AddIdpCertificateModal = ({ FormStore, t }) => {
const headerContent = t("NewCertificate");
+ const onClose = addArgument(FormStore.onCloseModal, "isIdpModalVisible");
+
return (
{headerContent}
- {t("OpenCertificate")}
+
+ {t("OpenCertificate")}
+
+