123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965 |
- <div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
- <ol class="breadcrumb">
- <li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
- <li>{{client.clientId}}</li>
- </ol>
- <kc-tabs-client></kc-tabs-client>
- <form class="form-horizontal" name="clientForm" novalidate kc-read-only="!client.access.configure">
- <fieldset class="border-top">
- <div class="form-group">
- <label class="col-md-2 control-label" for="clientId">{{:: 'client-id' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" id="clientId" name="clientId" data-ng-model="clientEdit.clientId" autofocus required>
- </div>
- <kc-tooltip>{{:: 'client-id.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group">
- <label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} </label>
- <div class="col-sm-6">
- <input class="form-control" type="text" id="name" name="name" data-ng-model="clientEdit.name" autofocus>
- </div>
- <kc-tooltip>{{:: 'client.name.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group">
- <label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
- <div class="col-sm-6">
- <input class="form-control" type="text" id="description" name="description" data-ng-model="clientEdit.description">
- </div>
- <kc-tooltip>{{:: 'client.description.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.enabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'client.enabled.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="serverInfo.featureEnabled('ACCOUNT2') && !(accessType === 'bearer-only' && protocol === 'openid-connect')">
- <label class="col-md-2 control-label" for="alwaysDisplayInConsole">{{:: 'alwaysDisplayInConsole' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.alwaysDisplayInConsole" name="alwaysDisplayInConsole" id="alwaysDisplayInConsole" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'alwaysDisplayInConsole.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="client.origin">
- <label class="col-md-2 control-label">{{:: 'client-origin-link' | translate}}</label>
- <div class="col-md-6">
- {{originName}}
- </div>
- <kc-tooltip>{{:: 'client-origin.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol != 'docker-v2'">
- <label class="col-md-2 control-label" for="consentRequired">{{:: 'consent-required' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.consentRequired" name="consentRequired" id="consentRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'consent-required.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="clientEdit.consentRequired && protocol != 'docker-v2'">
- <label class="col-md-2 control-label" for="displayOnConsentScreen">{{:: 'client.display-on-consent-screen' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="displayOnConsentScreen" ng-click="switchChange()" name="displayOnConsentScreen" id="displayOnConsentScreen" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'client.display-on-consent-screen.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="clientEdit.consentRequired && protocol != 'docker-v2' && displayOnConsentScreen">
- <label class="col-md-2 control-label" for="consentScreenText">{{:: 'client.consent-screen-text' | translate}} </label>
- <div class="col-sm-6">
- <input class="form-control" type="text" id="consentScreenText" name="consentScreenText" data-ng-model="clientEdit.attributes['consent.screen.text']">
- </div>
- <kc-tooltip>{{:: 'client.consent-screen-text.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group">
- <label class="col-md-2 control-label" for="loginTheme">{{:: 'login-theme' | translate}}</label>
- <div class="col-sm-6">
- <select class="form-control" id="loginTheme"
- ng-model="clientEdit.attributes['login_theme']"
- ng-options="o.name as o.name for o in serverInfo.themes.login">
- <option value="" selected></option>
- </select>
- </div>
- <kc-tooltip>{{:: 'login-theme.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group">
- <label class="col-md-2 control-label" for="protocol">{{:: 'client-protocol' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="protocol"
- ng-change="changeProtocol()"
- ng-model="protocol"
- ng-options="aProtocol for aProtocol in protocols">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'client-protocol.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="accessType">{{:: 'access-type' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="accessType"
- ng-change="changeAccessType()"
- ng-model="accessType"
- ng-options="aType for aType in accessTypes">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'access-type.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="standardFlowEnabled">{{:: 'standard-flow-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'standard-flow-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="clientEdit.standardFlowEnabled" name="standardFlowEnabled" id="standardFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="implicitFlowEnabled">{{:: 'implicit-flow-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'implicit-flow-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="clientEdit.implicitFlowEnabled" name="implicitFlowEnabled" id="implicitFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="directAccessGrantsEnabled">{{:: 'direct-access-grants-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'direct-access-grants-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="clientEdit.directAccessGrantsEnabled" name="directAccessGrantsEnabled" id="directAccessGrantsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="serviceAccountsEnabled">{{:: 'service-accounts-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'service-accounts-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="clientEdit.serviceAccountsEnabled" name="serviceAccountsEnabled" id="serviceAccountsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- </div>
- <div class="form-group"
- data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="oauth2DeviceAuthorizationGrantEnabled">{{::
- 'oauth2-device-authorization-grant-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'oauth2-device-authorization-grant-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="oauth2DeviceAuthorizationGrantEnabled" ng-click="switchChange()"
- name="oauth2DeviceAuthorizationGrantEnabled" id="oauth2DeviceAuthorizationGrantEnabled" onoffswitch
- on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
- </div>
- </div>
- <div class="form-group"
- data-ng-show="protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly && serverInfo.featureEnabled('CIBA')">
- <label class="col-md-2 control-label" for="oidcCibaGrantEnabled">{{::
- 'oidc-ciba-grant-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'oidc-ciba-grant-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="oidcCibaGrantEnabled" ng-click="switchChange()"
- name="oidcCibaGrantEnabled" id="oidcCibaGrantEnabled" onoffswitch
- on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
- </div>
- </div>
- <div class="form-group" data-ng-show="serverInfo.featureEnabled('AUTHORIZATION') && protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="authorizationServicesEnabled">{{:: 'authz-authorization-services-enabled' | translate}}</label>
- <kc-tooltip>{{:: 'authz-authorization-services-enabled.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6">
- <input ng-model="clientEdit.authorizationServicesEnabled" ng-click="confirmChangeAuthzSettings($event)" name="authorizationServicesEnabled" id="authorizationServicesEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlAuthnStatement">{{:: 'include-authnstatement' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlAuthnStatement" ng-click="switchChange()" name="samlAuthnStatement" id="samlAuthnStatement" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'include-authnstatement.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlOneTimeUseCondition">{{:: 'include-onetimeuse-condition' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlOneTimeUseCondition" ng-click="switchChange()" name="samlOneTimeUseCondition" id="samlOneTimeUseCondition" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'include-onetimeuse-condition.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlArtifactBinding">{{:: 'artifact-binding' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlArtifactBinding" ng-click="switchChange()" name="samlArtifactBinding" id="samlArtifactBinding" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'artifact-binding.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlServerSignature">{{:: 'sign-documents' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlServerSignature" ng-click="switchChange()" name="samlServerSignature" id="samlServerSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'sign-documents.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml' && samlServerSignature == true">
- <label class="col-md-2 control-label" for="samlServerSignatureEnableKeyInfoExtension">{{:: 'sign-documents-redirect-enable-key-info-ext' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlServerSignatureEnableKeyInfoExtension" ng-click="switchChange()" name="samlServerSignatureEnableKeyInfoExtension" id="samlServerSignatureEnableKeyInfoExtension" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'sign-documents-redirect-enable-key-info-ext.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlAssertionSignature">{{:: 'sign-assertions' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlAssertionSignature" ng-click="switchChange()" name="samlAssertionSignature" id="samlAssertionSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'sign-assertions.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
- <label class="col-md-2 control-label" for="signatureAlgorithm">{{:: 'signature-algorithm' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="signatureAlgorithm"
- ng-change="changeAlgorithm()"
- ng-model="signatureAlgorithm"
- ng-options="alg for alg in signatureAlgorithms">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'signature-algorithm.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlSigKeyNameTranformer">{{:: 'saml-signature-keyName-transformer' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="xmlKeyNameTranformer"
- ng-change="changeSamlSigKeyNameTranformer()"
- ng-model="samlXmlKeyNameTranformer"
- ng-options="alg for alg in xmlKeyNameTranformers">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'saml-signature-keyName-transformer.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
- <label class="col-md-2 control-label" for="canonicalization">{{:: 'canonicalization-method' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="canonicalization"
- ng-model="clientEdit.attributes['saml_signature_canonicalization_method']"
- ng-options="canon.value as canon.name for canon in canonicalization">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'canonicalization-method.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlEncrypt">{{:: 'encrypt-assertions' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlEncrypt" ng-click="switchChange()" name="samlEncrypt" id="samlEncrypt" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'encrypt-assertions.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlClientSignature">{{:: 'client-signature-required' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlClientSignature" ng-click="switchChange()" name="samlClientSignature" id="samlClientSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'client-signature-required.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlForcePostBinding">{{:: 'force-post-binding' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlForcePostBinding" ng-click="switchChange()" name="samlForcePostBinding" id="samlForcePostBinding" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'force-post-binding.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml' || protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="frontchannelLogout">{{:: 'front-channel-logout' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.frontchannelLogout" name="frontchannelLogout" id="frontchannelLogout" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'front-channel-logout.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && clientEdit.frontchannelLogout">
- <label class="col-md-2 control-label" for="frontchannelLogoutUrl">{{:: 'front-channel-logout-url' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="frontchannelLogoutUrl" id="frontchannelLogoutUrl" data-ng-model="clientEdit.attributes['frontchannel.logout.url']">
- </div>
- <kc-tooltip>{{:: 'front-channel-logout-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlForceNameIdFormat">{{:: 'force-name-id-format' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="samlForceNameIdFormat" ng-click="switchChange()" name="samlForceNameIdFormat" id="samlForceNameIdFormat" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'force-name-id-format.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlNameIdFormat">{{:: 'name-id-format' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="samlNameIdFormat"
- ng-change="changeNameIdFormat()"
- ng-model="nameIdFormat"
- ng-options="format for format in nameIdFormats">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'name-id-format.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="!clientEdit.bearerOnly && protocol != 'docker-v2'">
- <label class="col-md-2 control-label" for="rootUrl">{{:: 'root-url' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="rootUrl" id="rootUrl" data-ng-model="clientEdit.rootUrl">
- </div>
- <kc-tooltip>{{:: 'root-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-hide="clientEdit.bearerOnly || (!clientEdit.standardFlowEnabled && !clientEdit.implicitFlowEnabled) || protocol == 'docker-v2'">
- <label class="col-md-2 control-label" for="newRedirectUri"><span class="required" data-ng-show="protocol != 'saml'">*</span> {{:: 'valid-redirect-uris' | translate}}</label>
- <div class="col-sm-6">
- <div class="input-group" ng-repeat="(i, redirectUri) in clientEdit.redirectUris track by $index">
- <input class="form-control" ng-model="clientEdit.redirectUris[i]">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)"><span class="fa fa-minus"></span></button>
- </div>
- </div>
- <div class="input-group">
- <input class="form-control" ng-model="newRedirectUri" id="newRedirectUri">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="newRedirectUri.length > 0 && addRedirectUri()"><span class="fa fa-plus"></span></button>
- </div>
- </div>
- </div>
- <kc-tooltip>{{:: 'valid-redirect-uris.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="!clientEdit.bearerOnly && protocol != 'docker-v2'">
- <label class="col-md-2 control-label" for="baseUrl">{{:: 'base-url' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="baseUrl" id="baseUrl" data-ng-model="clientEdit.baseUrl">
- </div>
- <kc-tooltip>{{:: 'base-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-hide="protocol == 'saml' || protocol == 'docker-v2'">
- <label class="col-md-2 control-label" for="adminUrl">{{:: 'admin-url' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="adminUrl" id="adminUrl"
- data-ng-model="clientEdit.adminUrl">
- </div>
- <kc-tooltip>{{:: 'admin-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="masterSamlUrl">{{:: 'master-saml-processing-url' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
- data-ng-model="clientEdit.adminUrl">
- </div>
- <kc-tooltip>{{:: 'master-saml-processing-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="urlReferenceName">{{:: 'idp-sso-url-ref' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_idp_initiated_sso_url_name" class="form-control" type="text" name="urlReferenceName" id="urlReferenceName" />
- <div data-ng-show="clientEdit.attributes.saml_idp_initiated_sso_url_name">
- {{:: 'idp-sso-url-ref.urlhint' | translate}} {{samlIdpInitiatedUrl(clientEdit.attributes.saml_idp_initiated_sso_url_name)}}
- </div>
- </div>
- <kc-tooltip>{{:: 'idp-sso-url-ref.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'saml' || protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="logoUri">{{:: 'logo-uri' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="logoUri" id="logoUri" data-ng-model="clientEdit.attributes.logoUri">
- </div>
- <kc-tooltip>{{:: 'logo-uri.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'saml' || protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="policyUri">{{:: 'policy-uri' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="policyUri" id="policyUri" data-ng-model="clientEdit.attributes.policyUri">
- </div>
- <kc-tooltip>{{:: 'policy-uri.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'saml' || protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="tosUri">{{:: 'tos-uri' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="tosUri" id="tosUri" data-ng-model="clientEdit.attributes.tosUri">
- </div>
- <kc-tooltip>{{:: 'tos-uri.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="idpInitiatedRelayState">{{:: 'idp-sso-relay-state' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_idp_initiated_sso_relay_state" class="form-control" type="text" name="idpInitiatedRelayState" id="idpInitiatedRelayState" />
- </div>
- <kc-tooltip>{{:: 'idp-sso-relay-state.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="(!clientEdit.bearerOnly && protocol == 'openid-connect') && (clientEdit.standardFlowEnabled || clientEdit.directAccessGrantsEnabled || clientEdit.implicitFlowEnabled)">
- <label class="col-md-2 control-label" for="newWebOrigin">{{:: 'web-origins' | translate}}</label>
- <div class="col-sm-6">
- <div class="input-group" ng-repeat="(i, webOrigin) in clientEdit.webOrigins track by $index">
- <input class="form-control" ng-model="clientEdit.webOrigins[i]">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)"><span class="fa fa-minus"></span></button>
- </div>
- </div>
- <div class="input-group">
- <input class="form-control" ng-model="newWebOrigin" id="newWebOrigin">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="newWebOrigin.length > 0 && addWebOrigin()"><span class="fa fa-plus"></span></button>
- </div>
- </div>
- </div>
- <kc-tooltip>{{:: 'web-origins.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="backchannelLogoutUrl">{{:: 'backchannel-logout-url' | translate}}</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="backchannelLogoutUrl" id="backchannelLogoutUrl" data-ng-model="clientEdit.attributes['backchannel.logout.url']">
- </div>
- <kc-tooltip>{{:: 'backchannel-logout-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="backchannelLogoutSessionRequired">{{:: 'backchannel-logout-session-required' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="backchannelLogoutSessionRequired" name="backchannelLogoutSessionRequired" id="backchannelLogoutSessionRequired" onoffswitch ng-click="switchChange()" on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'backchannel-logout-session-required.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
- <label class="col-md-2 control-label" for="backchannelLogoutRevokeOfflineSessions">{{:: 'backchannel-logout-revoke-offline-sessions' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="backchannelLogoutRevokeOfflineSessions" name="backchannelLogoutRevokeOfflineSessions" id="backchannelLogoutRevokeOfflineSessions" onoffswitch ng-click="switchChange()" on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'backchannel-logout-revoke-offline-sessions.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- <fieldset data-ng-show="protocol == 'saml'">
- <legend collapsed><span class="text">{{:: 'fine-saml-endpoint-conf' | translate}}</span> <kc-tooltip>{{:: 'fine-saml-endpoint-conf.tooltip' | translate}}</kc-tooltip></legend>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="consumerServicePost">{{:: 'assertion-consumer-post-binding-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_assertion_consumer_url_post" class="form-control" type="text" name="consumerServicePost" id="consumerServicePost" />
- </div>
- <kc-tooltip>{{:: 'assertion-consumer-post-binding-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="consumerServiceRedirect">{{:: 'assertion-consumer-redirect-binding-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_assertion_consumer_url_redirect" class="form-control" type="text" name="consumerServiceRedirect" id="consumerServiceRedirect" />
- </div>
- <kc-tooltip>{{:: 'assertion-consumer-redirect-binding-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-post-binding-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_single_logout_service_url_post" class="form-control" type="text" name="logoutPostBinding" id="logoutPostBinding" />
- </div>
- <kc-tooltip>{{:: 'logout-service-post-binding-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="logoutRedirectBinding">{{:: 'logout-service-redir-binding-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_single_logout_service_url_redirect" class="form-control" type="text" name="logoutRedirectBinding" id="logoutRedirectBinding" />
- </div>
- <kc-tooltip>{{:: 'logout-service-redir-binding-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="logoutArtifactBinding">{{:: 'logout-service-artifact-binding-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_single_logout_service_url_artifact" class="form-control" type="text" name="logoutRedirectBinding" id="logoutArtifactBinding" />
- </div>
- <kc-tooltip>{{:: 'logout-service-artifact-binding-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="artifactBindingUrl">{{:: 'artifact-binding-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_artifact_binding_url" class="form-control" type="text" name="artifactBindingUrl" id="artifactBindingUrl" />
- </div>
- <kc-tooltip>{{:: 'artifact-binding-url.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="artifactResolutionServiceUrl">{{:: 'artifact-resolution-service-url' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes.saml_artifact_resolution_service_url" class="form-control" type="text" name="artifactResolutionServiceUrl" id="artifactResolutionServiceUrl" />
- </div>
- <kc-tooltip>{{:: 'artifact-resolution-service-url.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- <fieldset data-ng-show="protocol == 'openid-connect'">
- <legend collapsed><span class="text">{{:: 'fine-oidc-endpoint-conf' | translate}}</span> <kc-tooltip>{{:: 'fine-oidc-endpoint-conf.tooltip' | translate}}</kc-tooltip></legend>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="accessTokenSignedResponseAlg">{{:: 'access-token-signed-response-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="accessTokenSignedResponseAlg"
- ng-change="changeAccessTokenSignedResponseAlg()"
- ng-model="accessTokenSignedResponseAlg">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('signature')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'access-token-signed-response-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="idTokenSignedResponseAlg">{{:: 'id-token-signed-response-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="idTokenSignedResponseAlg"
- ng-change="changeIdTokenSignedResponseAlg()"
- ng-model="idTokenSignedResponseAlg">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('signature')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'id-token-signed-response-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="idTokenEncryptedResponseAlg">{{:: 'id-token-encrypted-response-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="idTokenEncryptedResponseAlg"
- ng-change="changeIdTokenEncryptedResponseAlg()"
- ng-model="idTokenEncryptedResponseAlg">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('cekmanagement')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'id-token-encrypted-response-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="idTokenEncryptedResponseEnc">{{:: 'id-token-encrypted-response-enc' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="idTokenEncryptedResponseEnc"
- ng-change="changeIdTokenEncryptedResponseEnc()"
- ng-model="idTokenEncryptedResponseEnc">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('contentencryption')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'id-token-encrypted-response-enc.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="userInfoSignedResponseAlg">{{:: 'user-info-signed-response-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="userInfoSignedResponseAlg"
- ng-change="changeUserInfoSignedResponseAlg()"
- ng-model="userInfoSignedResponseAlg">
- <option value="unsigned">unsigned</option>
- <option ng-repeat="provider in serverInfo.listProviderIds('signature')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'user-info-signed-response-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="requestObjectSignatureAlg">{{:: 'request-object-signature-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="requestObjectSignatureAlg"
- ng-change="changeRequestObjectSignatureAlg()"
- ng-model="requestObjectSignatureAlg">
- <option value="any">any</option>
- <option value="none">none</option>
- <option ng-repeat="provider in serverInfo.listProviderIds('clientSignature')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'request-object-signature-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="requestObjectEncryptionAlg">{{:: 'request-object-encryption-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="requestObjectEncryptionAlg"
- ng-change="changeRequestObjectEncryptionAlg()"
- ng-model="requestObjectEncryptionAlg">
- <option value="any">any</option>
- <option ng-repeat="provider in serverInfo.listProviderIds('cekmanagement')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'request-object-encryption-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="requestObjectEncryptionEnc">{{:: 'request-object-encryption-enc' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="requestObjectEncryptionEnc"
- ng-change="changeRequestObjectEncryptionEnc()"
- ng-model="requestObjectEncryptionEnc">
- <option value="any">any</option>
- <option ng-repeat="provider in serverInfo.listProviderIds('contentencryption')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'request-object-encryption-enc.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="changeRequestObjectRequired">{{:: 'request-object-required' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="requestObjectRequired"
- ng-change="changeRequestObjectRequired()"
- ng-model="requestObjectRequired"
- ng-options="sig for sig in requestObjectRequiredOptions">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'request-object-required.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly && serverInfo.featureEnabled('CIBA') && oidcCibaGrantEnabled == true">
- <label class="col-md-2 control-label" for="cibaBackchannelTokenDeliveryMode">{{:: 'ciba-backchannel-token-delivery-mode' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="cibaBackchannelTokenDeliveryMode"
- ng-change="changeCibaBackchannelTokenDeliveryMode()"
- ng-model="cibaBackchannelTokenDeliveryMode">
- <option value="poll">poll</option>
- <option value="ping">ping</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'ciba-backchannel-token-delivery-mode.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly && serverInfo.featureEnabled('CIBA') && oidcCibaGrantEnabled == true && cibaBackchannelTokenDeliveryMode == 'ping'">
- <label class="col-md-2 control-label" for="cibaBackchannelClientNotificationEndpoint">{{:: 'ciba-backchannel-client-notification-endpoint' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="clientEdit.attributes['ciba.backchannel.client.notification.endpoint']" class="form-control" type="text" name="cibaBackchannelClientNotificationEndpoint" id="cibaBackchannelClientNotificationEndpoint" />
- </div>
- <kc-tooltip>{{:: 'ciba-backchannel-client-notification-endpoint.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly && serverInfo.featureEnabled('CIBA') && oidcCibaGrantEnabled == true">
- <label class="col-md-2 control-label" for="cibaBackchannelAuthRequestSigningAlg">{{:: 'ciba-backchannel-auth-request-signing-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="cibaBackchannelAuthRequestSigningAlg"
- ng-change="changeCibaBackchannelAuthRequestSigningAlg()"
- ng-model="cibaBackchannelAuthRequestSigningAlg">
- <option value="any">any</option>
- <option ng-repeat="provider in serverInfo.listProviderIds('clientSignature')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'ciba-backchannel-auth-request-signing-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="newRequestUri">{{:: 'request-uris' | translate}}</label>
- <div class="col-sm-6">
- <div class="input-group" ng-repeat="(i, requestUri) in clientEdit.requestUris track by $index">
- <input class="form-control" ng-model="clientEdit.requestUris[i]">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="deleteRequestUri($index)"><span class="fa fa-minus"></span></button>
- </div>
- </div>
- <div class="input-group">
- <input class="form-control" ng-model="newRequestUri" id="newRequestUri">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="newRequestUri.length > 0 && addRequestUri()"><span class="fa fa-plus"></span></button>
- </div>
- </div>
- </div>
- <kc-tooltip>{{:: 'request-uris.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="authorizationSignedResponseAlg">{{:: 'authorization-signed-response-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="authorizationSignedResponseAlg"
- ng-change="changeAuthorizationSignedResponseAlg()"
- ng-model="authorizationSignedResponseAlg">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('signature')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'authorization-signed-response-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="authorizationEncryptedResponseAlg">{{:: 'authorization-encrypted-response-alg' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="authorizationEncryptedResponseAlg"
- ng-change="changeAuthorizationEncryptedResponseAlg()"
- ng-model="authorizationEncryptedResponseAlg">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('cekmanagement')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'authorization-encrypted-response-alg.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block">
- <label class="col-md-2 control-label" for="authorizationEncryptedResponseEnc">{{:: 'authorization-encrypted-response-enc' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="authorizationEncryptedResponseEnc"
- ng-change="changeAuthorizationEncryptedResponseEnc()"
- ng-model="authorizationEncryptedResponseEnc">
- <option value=""></option>
- <option ng-repeat="provider in serverInfo.listProviderIds('contentencryption')" value="{{provider}}">{{provider}}</option>
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'authorization-encrypted-response-enc.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- <fieldset data-ng-show="protocol == 'openid-connect'">
- <legend collapsed><span class="text">{{:: 'oidc-compatibility-modes' | translate}}</span> <kc-tooltip>{{:: 'oidc-compatibility-modes.tooltip' | translate}}</kc-tooltip></legend>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="excludeSessionStateFromAuthResponse">{{:: 'exclude-session-state-from-auth-response' | translate}}</label>
- <div class="col-md-6">
- <input ng-model="excludeSessionStateFromAuthResponse" ng-click="switchChange()" name="excludeSessionStateFromAuthResponse" id="excludeSessionStateFromAuthResponse" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'exclude-session-state-from-auth-response.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="useRefreshTokens">{{:: 'use-refresh-tokens' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="useRefreshTokens" ng-click="switchChange()" name="useRefreshTokens" id="useRefreshTokens"
- onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
- </div>
- <kc-tooltip>{{:: 'use-refresh-tokens.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="useRefreshTokenForClientCredentialsGrant">{{:: 'use-refresh-token-for-client-credentials-grant' | translate}}</label>
- <div class="col-md-6">
- <input ng-model="useRefreshTokenForClientCredentialsGrant" ng-click="switchChange()" name="useRefreshTokenForClientCredentialsGrant" id="useRefreshTokenForClientCredentialsGrant" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'use-refresh-token-for-client-credentials-grant.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- <fieldset>
- <legend collapsed><span class="text">{{:: 'advanced-client-settings' | translate}}</span> <kc-tooltip>{{:: 'advanced-client-settings.tooltip' | translate}}</kc-tooltip></legend>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="accessTokenLifespan">{{:: 'access-token-lifespan' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="-1"
- max="31536000" data-ng-model="accessTokenLifespan.time"
- id="accessTokenLifespan" name="accessTokenLifespan"
- data-ng-change="updateTimeouts()"/>
- <select class="form-control" name="accessTokenLifespanUnit" data-ng-model="accessTokenLifespan.unit" data-ng-change="updateTimeouts()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'access-token-lifespan.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlAssertionLifespan">{{:: 'saml-assertion-lifespan' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="1"
- max="31536000" data-ng-model="samlAssertionLifespan.time"
- id="samlAssertionLifespan" name="samlAssertionLifespan"
- data-ng-change="updateAssertionLifespan()"/>
- <select class="form-control" name="samlAssertionLifespanUnit" data-ng-model="samlAssertionLifespan.unit" data-ng-change="updateAssertionLifespan()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'saml-assertion-lifespan.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="clientSessionIdleTimeout">{{:: 'client-session-idle' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="0"
- max="31536000" data-ng-model="clientSessionIdleTimeout.time"
- id="clientSessionIdleTimeout" name="clientSessionIdleTimeout"
- data-ng-change="updateClientSessionIdleTimeout()"/>
- <select class="form-control" name="clientSessionIdleTimeoutUnit" data-ng-model="clientSessionIdleTimeout.unit" data-ng-change="updateClientSessionIdleTimeout()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'client-session-idle.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="clientSessionMaxLifespan">{{:: 'client-session-max' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="0"
- max="31536000" data-ng-model="clientSessionMaxLifespan.time"
- id="clientSessionMaxLifespan" name="clientSessionMaxLifespan"
- data-ng-change="updateClientSessionMaxLifespan()"/>
- <select class="form-control" name="clientSessionMaxLifespanUnit" data-ng-model="clientSessionMaxLifespan.unit" data-ng-change="updateClientSessionMaxLifespan()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'client-session-max.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="clientOfflineSessionIdleTimeout">{{::
- 'client-offline-session-idle' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="0" max="31536000"
- data-ng-model="clientOfflineSessionIdleTimeout.time" id="clientOfflineSessionIdleTimeout"
- name="clientOfflineSessionIdleTimeout" data-ng-change="updateClientOfflineSessionIdleTimeout()" /> <select
- class="form-control" name="clientOfflineSessionIdleTimeoutUnit"
- data-ng-model="clientOfflineSessionIdleTimeout.unit"
- data-ng-change="updateClientOfflineSessionIdleTimeout()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'client-offline-session-idle.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="clientOfflineSessionMaxLifespan">{{::
- 'client-offline-session-max' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="0" max="31536000"
- data-ng-model="clientOfflineSessionMaxLifespan.time" id="clientOfflineSessionMaxLifespan"
- name="clientOfflineSessionMaxLifespan" data-ng-change="updateClientOfflineSessionMaxLifespan()" /> <select
- class="form-control" name="clientOfflineSessionMaxLifespanUnit"
- data-ng-model="clientOfflineSessionMaxLifespan.unit"
- data-ng-change="updateClientOfflineSessionMaxLifespan()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'client-offline-session-max.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group"
- data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly && oauth2DeviceAuthorizationGrantEnabled == true">
- <label class="col-md-2 control-label" for="oauth2DeviceCodeLifespan">{{:: 'oauth2-device-code-lifespan'
- | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="1" max="31536000"
- data-ng-model="oauth2DeviceCodeLifespan.time" id="oauth2DeviceCodeLifespan"
- name="oauth2DeviceCodeLifespan" data-ng-change="updateOauth2DeviceCodeLifespan()" /> <select
- class="form-control" name="oauth2DeviceCodeLifespanUnit" data-ng-model="oauth2DeviceCodeLifespan.unit"
- data-ng-change="updateOauth2DeviceCodeLifespan()">
- <option value="Minutes">{{:: 'minutes' | translate}}</option>
- <option value="Hours">{{:: 'hours' | translate}}</option>
- <option value="Days">{{:: 'days' | translate}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'oauth2-device-code-lifespan.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group"
- data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly && oauth2DeviceAuthorizationGrantEnabled == true">
- <label class="col-md-2 control-label" for="oauth2DevicePollingInterval">{{::
- 'oauth2-device-polling-interval' | translate}}</label>
- <div class="col-md-6 time-selector">
- <input class="form-control" type="number" min="1" max="31536000" data-ng-model="oauth2DevicePollingInterval"
- id="oauth2DevicePollingInterval" name="oauth2DevicePollingInterval"
- data-ng-change="updateOauth2DevicePollingInterval()" />
- </div>
- <kc-tooltip>{{:: 'oauth2-device-polling-interval.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="tlsClientCertificateBoundAccessTokens">{{:: 'tls-client-certificate-bound-access-tokens' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="tlsClientCertificateBoundAccessTokens" ng-click="switchChange()" name="tlsClientCertificateBoundAccessTokens" id="tlsClientCertificateBoundAccessTokens" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'tls-client-certificate-bound-access-tokens.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect' && clientEdit.standardFlowEnabled && clientEdit.implicitFlowEnabled">
- <label class="col-md-2 control-label" for="useIdTokenAsDetachedSignature">{{:: 'use-idtoken-as-detached-signature' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="useIdTokenAsDetachedSignature" ng-click="switchChange()" name="useIdTokenAsDetachedSignature" id="useIdTokenAsDetachedSignature" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'use-idtoken-as-detached-signature.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="changePkceCodeChallengeMethod">{{:: 'pkce-code-challenge-method' | translate}}</label>
- <div class="col-sm-6">
- <div>
- <select class="form-control" id="pkceCodeChallengeMethod"
- ng-change="changePkceCodeChallengeMethod()"
- ng-model="pkceCodeChallengeMethod"
- ng-options="method for method in changePkceCodeChallengeMethodOptions">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'pkce-code-challenge-method.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix block" data-ng-show="protocol == 'openid-connect'">
- <label class="col-md-2 control-label" for="requirePushedAuthorizationRequests">{{:: 'require-pushed-authorization-requests' | translate}}</label>
- <div class="col-sm-6">
- <input ng-model="requirePushedAuthorizationRequests" ng-click="switchChange()" name="requirePushedAuthorizationRequests" id="requirePushedAuthorizationRequests" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
- </div>
- <kc-tooltip>{{:: 'require-pushed-authorization-requests.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- <fieldset>
- <legend collapsed><span class="text">{{:: 'client-flow-bindings' | translate}}</span> <kc-tooltip>{{:: 'client-flow-bindings.tooltip' | translate}}</kc-tooltip></legend>
- <div class="form-group">
- <label for="browser" class="col-md-2 control-label">{{:: 'browser-flow' | translate}}</label>
- <div class="col-md-2">
- <div>
- <select id="browser" data-ng-model="clientEdit.authenticationFlowBindingOverrides['browser']" class="form-control" ng-options="flow.id as flow.alias for flow in flows">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'browser-flow.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect'">
- <label for="grant" class="col-md-2 control-label">{{:: 'direct-grant-flow' | translate}}</label>
- <div class="col-md-2">
- <div>
- <select id="grant" ng-model="clientEdit.authenticationFlowBindingOverrides['direct_grant']" class="form-control" ng-options="flow.id as flow.alias for flow in flows">
- </select>
- </div>
- </div>
- <kc-tooltip>{{:: 'direct-grant-flow.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- <div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="client.access.configure">
- <button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
- <button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
- </div>
- </div>
- </form>
- </div>
- <kc-menu></kc-menu>
|