UNPKG

@keycloakify/keycloak-admin-ui

Version:
40 lines 3.98 kB
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