@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
40 lines • 3.98 kB
JavaScript
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { HelpItem, KeycloakSelect, SelectVariant, } from "../../ui-shared";
import { FormGroup, SelectOption } from "@patternfly/react-core";
import { useState } from "react";
import { Controller, useFormContext, useWatch } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useServerInfo } from "../../context/server-info/ServerInfoProvider";
import { sortProviders } from "../../util";
import { ClientIdSecret } from "../../identity-providers/component/ClientIdSecret";
import { SwitchField } from "../../identity-providers/component/SwitchField";
import { TextField } from "../../identity-providers/component/TextField";
const clientAuthentications = [
"client_secret_post",
"client_secret_basic",
"client_secret_jwt",
"private_key_jwt",
];
export const OIDCAuthentication = ({ create = true }) => {
const providers = useServerInfo().providers.clientSignature.providers;
const { t } = useTranslation();
const { control } = useFormContext();
const [openClientAuth, setOpenClientAuth] = useState(false);
const [openClientAuthSigAlg, setOpenClientAuthSigAlg] = useState(false);
const clientAuthMethod = useWatch({
control: control,
name: "config.clientAuthMethod",
});
return (_jsxs(_Fragment, { children: [_jsx(FormGroup, { label: t("clientAuthentication"), labelIcon: _jsx(HelpItem, { helpText: t("clientAuthenticationHelp"), fieldLabelId: "clientAuthentication" }), fieldId: "clientAuthentication", children: _jsx(Controller, { name: "config.clientAuthMethod", defaultValue: clientAuthentications[0], control: control, render: ({ field }) => (_jsx(KeycloakSelect, { toggleId: "clientAuthentication", onToggle: () => setOpenClientAuth(!openClientAuth), onSelect: (value) => {
field.onChange(value);
setOpenClientAuth(false);
}, selections: field.value, variant: SelectVariant.single, "aria-label": t("clientAuthentication"), isOpen: openClientAuth, children: clientAuthentications.map((option) => (_jsx(SelectOption, { selected: option === field.value, value: option, children: t(`clientAuthentications.${option}`) }, option))) })) }) }), _jsx(ClientIdSecret, { secretRequired: clientAuthMethod !== "private_key_jwt", create: create }), _jsx(FormGroup, { label: t("clientAssertionSigningAlg"), labelIcon: _jsx(HelpItem, { helpText: t("clientAssertionSigningAlgHelp"), fieldLabelId: "clientAssertionSigningAlg" }), fieldId: "clientAssertionSigningAlg", children: _jsx(Controller, { name: "config.clientAssertionSigningAlg", defaultValue: "", control: control, render: ({ field }) => (_jsx(KeycloakSelect, { maxHeight: 200, toggleId: "clientAssertionSigningAlg", onToggle: () => setOpenClientAuthSigAlg(!openClientAuthSigAlg), onSelect: (value) => {
field.onChange(value.toString());
setOpenClientAuthSigAlg(false);
}, selections: field.value || t("algorithmNotSpecified"), variant: SelectVariant.single, "aria-label": t("selectClientAssertionSigningAlg"), isOpen: openClientAuthSigAlg, children: [
_jsx(SelectOption, { selected: field.value === "", value: "", children: t("algorithmNotSpecified") }, ""),
...sortProviders(providers).map((option) => (_jsx(SelectOption, { selected: option === field.value, value: option, children: option }, option))),
] })) }) }), (clientAuthMethod === "private_key_jwt" ||
clientAuthMethod === "client_secret_jwt") && (_jsx(TextField, { field: "config.clientAssertionAudience", label: "clientAssertionAudience" })), clientAuthMethod === "private_key_jwt" && (_jsx(SwitchField, { field: "config.jwtX509HeadersEnabled", label: "jwtX509HeadersEnabled" }))] }));
};
//# sourceMappingURL=OIDCAuthentication.js.map