Added missing default field (#2693)
This commit is contained in:
parent
e92ed5b98c
commit
ffae9b3072
4 changed files with 33 additions and 2 deletions
|
@ -99,6 +99,7 @@
|
|||
"keyForCodeExchange": "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.",
|
||||
"pushedAuthorizationRequestRequired": "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.",
|
||||
"acrToLoAMapping": "Define which ACR (Authentication Context Class Reference) value is mapped to which LoA (Level of Authentication). The ACR can be any value, whereas the LoA must be numeric.",
|
||||
"defaultACRValues": "Default values to be used as voluntary ACR in case that there is no explicit ACR requested by 'claims' or 'acr_values' parameter in the OIDC request.",
|
||||
"assertionConsumerServicePostBindingURL": "SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.",
|
||||
"assertionConsumerServiceRedirectBindingURL": "SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.",
|
||||
"logoutServicePostBindingURL": "SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding",
|
||||
|
|
|
@ -477,6 +477,7 @@
|
|||
"keyForCodeExchange": "Proof Key for Code Exchange Code Challenge Method",
|
||||
"pushedAuthorizationRequestRequired": "Pushed authorization request required",
|
||||
"acrToLoAMapping": "ACR to LoA Mapping",
|
||||
"defaultACRValues": "Default ACR Values",
|
||||
"authenticationOverrides": "Authentication flow overrides",
|
||||
"browserFlow": "Browser Flow",
|
||||
"directGrant": "Direct Grant Flow",
|
||||
|
|
|
@ -71,7 +71,7 @@ import { toClientScopesTab } from "./routes/ClientScopeTab";
|
|||
import { AuthorizationExport } from "./authorization/AuthorizationExport";
|
||||
import { useServerInfo } from "../context/server-info/ServerInfoProvider";
|
||||
import { PermissionsTab } from "../components/permission-tab/PermissionTab";
|
||||
import { keyValueToArray } from "../components/key-value-form/key-value-convert";
|
||||
import type { KeyValueType } from "../components/key-value-form/key-value-convert";
|
||||
import { useAccess } from "../context/access/Access";
|
||||
|
||||
type ClientDetailHeaderProps = {
|
||||
|
@ -249,6 +249,12 @@ export default function ClientDetails() {
|
|||
)
|
||||
);
|
||||
}
|
||||
if (client.attributes?.["default.acr.values"]) {
|
||||
form.setValue(
|
||||
"attributes.default.acr.values",
|
||||
stringToMultiline(client.attributes["default.acr.values"])
|
||||
);
|
||||
}
|
||||
Object.entries(client.attributes || {})
|
||||
.filter(([key]) => key.startsWith("saml.server.signature"))
|
||||
.map(([key, value]) =>
|
||||
|
@ -292,6 +298,12 @@ export default function ClientDetails() {
|
|||
);
|
||||
}
|
||||
|
||||
if (values.attributes?.default?.acr?.values) {
|
||||
values.attributes["default.acr.values"] = toStringValue(
|
||||
values.attributes.default.acr.values
|
||||
);
|
||||
}
|
||||
|
||||
const submittedClient =
|
||||
convertFormValuesToObject<ClientRepresentation>(values);
|
||||
|
||||
|
@ -304,7 +316,11 @@ export default function ClientDetails() {
|
|||
|
||||
if (submittedClient.attributes?.["acr.loa.map"]) {
|
||||
submittedClient.attributes["acr.loa.map"] = JSON.stringify(
|
||||
keyValueToArray(submittedClient.attributes["acr.loa.map"])
|
||||
Object.fromEntries(
|
||||
(submittedClient.attributes["acr.loa.map"] as KeyValueType[])
|
||||
.filter(({ key }) => key !== "")
|
||||
.map(({ key, value }) => [key, value])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import { HelpItem } from "../../components/help-enabler/HelpItem";
|
|||
import { TimeSelector } from "../../components/time-selector/TimeSelector";
|
||||
import { TokenLifespan } from "./TokenLifespan";
|
||||
import { KeyValueInput } from "../../components/key-value-form/KeyValueInput";
|
||||
import { MultiLineInput } from "../../components/multi-line-input/MultiLineInput";
|
||||
|
||||
type AdvancedSettingsProps = {
|
||||
control: Control<Record<string, any>>;
|
||||
|
@ -168,6 +169,18 @@ export const AdvancedSettings = ({
|
|||
>
|
||||
<KeyValueInput name="attributes.acr.loa.map" />
|
||||
</FormGroup>
|
||||
<FormGroup
|
||||
label={t("defaultACRValues")}
|
||||
fieldId="defaultACRValues"
|
||||
labelIcon={
|
||||
<HelpItem
|
||||
helpText="clients-help:defaultACRValues"
|
||||
fieldLabelId="clients:defaultACRValues"
|
||||
/>
|
||||
}
|
||||
>
|
||||
<MultiLineInput name="attributes.default.acr.values" />
|
||||
</FormGroup>
|
||||
</>
|
||||
)}
|
||||
<ActionGroup>
|
||||
|
|
Loading…
Reference in a new issue