123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <!DOCTYPE HTML>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <#include "../../layout/header.ftl"/>
- <#include "../../layout/common.cssjs.ftl"/>
- <#include "../appCommonHead.ftl"/>
- <#setting number_format="#">
- </head>
- <body>
- <form id="actionForm_app" method="post" type="label" autoclose="true" closeWindow="true"
- action="<@base/>/apps/oauth20/update"
- forward="<@base/>/apps/list"
- enctype="multipart/form-data"
- class="needs-validation" novalidate>
- <!-- content -->
- <!--table-->
- <table width="960px" class="table table-bordered" >
- <tbody>
- <tr>
- <td ><#include "../appUpdateCommon.ftl"/></td>
- </tr>
- <tr>
- <td>
- <table width="960px" class="table table-bordered" >
- <tbody>
-
- <tr>
- <td colspan=4><@locale code="apps.oauth.v2.0.info" /></td>
- </tr>
- <tr>
- <th style="width:15%;"><@locale code="apps.oauth.v2.0.clientId" />:</th>
- <td style="width:35%;">
- <span id="clientId_text">${model.clientId}</span>
- <input type="hidden" class="form-control" id="clientId" name="clientId" title="" value="${model.clientId}"/>
-
- </td>
- <th style="width:15%;"><@locale code="apps.oauth.v2.0.clientSecret" />:</th>
- <td style="width:35%;">
- <span id="clientSecret_text">${model.clientSecret}</span>
- <input type="hidden" class="form-control" id="clientSecret" name="clientSecret" title="" value="${model.clientSecret}"/>
-
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.scope" />:</th>
- <td colspan="3">
- <table class="hidetable" style="width:100%;">
- <tr>
- <td>read<input type="checkbox" id="scope_trust" name="scope" value="read" <#if model.scope?contains("read") >checked</#if> /></td>
- <td>write<input type="checkbox" id="scope_write" name="scope" value="write" <#if model.scope?contains('write') >checked</#if>/></td>
- <td>trust<input type="checkbox" id="scope_trust" name="scope" value="trust" <#if model.scope?contains('trust') >checked</#if>/></td>
- <td>openid<input type="checkbox" id="scope_openid" name="scope" value="openid" <#if model.scope?contains('openid') >checked</#if>/></td>
- <td>profile<input type="checkbox" id="scope_profile" name="scope" value="profile" <#if model.scope?contains('profile') >checked</#if>/></td>
- <td>email<input type="checkbox" id="scope_email" name="scope" value="email" <#if model.scope?contains('email') >checked</#if>/></td>
- <td>phone<input type="checkbox" id="scope_phone" name="scope" value="phone" <#if model.scope?contains('phone') >checked</#if>/></td>
- <td>address<input type="checkbox" id="scope_address" name="scope" value="address" <#if model.scope?contains('address') >checked</#if>/></td>
- <td>all<input type="checkbox" id="scope_all" name="scope" value="all" <#if model.scope?contains('all') >checked</#if>/></td>
- <td><b class="orange"></b><label for="scope"></label></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.GrantTypes" />:</th>
- <td colspan="3">
- <table class="hidetable" style="width:100%;">
- <tr>
- <td>authorization_code | code<input <#if model.authorizedGrantTypes?contains('authorization_code') >checked</#if> type="checkbox" id="grantTypes_authorization_code" name="authorizedGrantTypes" value="authorization_code"/></td>
- <td>password<input <#if model.authorizedGrantTypes?contains('password') >checked</#if> type="checkbox" id="grantTypes_trust" name="authorizedGrantTypes" value="password"/></td>
- <td>implicit<input <#if model.authorizedGrantTypes?contains('implicit') >checked</#if> type="checkbox" id="grantTypes_implicit" name="authorizedGrantTypes" value="implicit"/></td>
- <td>refresh_token<input <#if model.authorizedGrantTypes?contains('refresh_token') >checked</#if> type="checkbox" id="grantTypes_refresh_token" name="authorizedGrantTypes" value="refresh_token"/></td>
- <td>id_token<input <#if model.authorizedGrantTypes?contains('id_token') >checked</#if> type="checkbox" id="grantTypes_id_token" name="authorizedGrantTypes" value="id_token"/></td>
- <td>token<input <#if model.authorizedGrantTypes?contains( 'token') >checked</#if> type="checkbox" id="grantTypes_token" name="authorizedGrantTypes" value="token"/></td>
-
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.registeredRedirectUris" />:</th>
- <td colspan=3>
- <textarea class="form-control" id="registeredRedirectUris" name="registeredRedirectUris" rows="4" cols="60" required="" >${model.registeredRedirectUris}</textarea>
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.accessTokenValiditySeconds" />:</th>
- <td >
- <input type="text" class="form-control" id="accessTokenValiditySeconds" name="accessTokenValiditySeconds" title="" value="${model.accessTokenValiditySeconds}"/>
-
- </td>
- <th><@locale code="apps.oauth.refreshTokenValiditySeconds" />:</th>
- <td>
- <input type="text" class="form-control" id="refreshTokenValiditySeconds" name="refreshTokenValiditySeconds" title="" value="${model.refreshTokenValiditySeconds}"/>
-
- </td>
- </tr>
- <tr>
- <th>PKCE:</th>
- <td >
- <select id="pkce" name="pkce" class="form-control form-select">
- <option value="yes" <#if "yes"==model.pkce?default("yes") >selected</#if>>
- <@locale code="common.text.yes" /></option>
- <option value="no" <#if 'no'==model.pkce >selected</#if>>
- <@locale code="common.text.no" /></option>
- </select>
- </td>
- <th><@locale code="apps.oauth.approvalPrompt" />:</th>
- <td >
- <select id="approvalPrompt" name="approvalPrompt" class="form-control form-select">
- <option value="force" <#if ""==model.approvalPrompt?default("") >selected</#if>>
- <@locale code="apps.oauth.approvalPrompt.force" /></option>
- <option value="auto" <#if 'auto'==model.approvalPrompt >selected</#if>>
- <@locale code="apps.oauth.approvalPrompt.auto" /></option>
- </select>
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.connect.idTokenSigningAlgorithm" />:</th>
- <td >
- <select id="idTokenSigningAlgorithm" name="idTokenSigningAlgorithm" class="form-control form-select">
- <option value="none" <#if 'none' ==model.idTokenSigningAlgorithm >selected</#if>>No digital signature</option>
- <option value="HS256" <#if 'HS256'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-256 hash algorithm</option>
- <option value="HS384" <#if 'HS384'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-384 hash algorithm</option>
- <option value="HS512" <#if 'HS512'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-512 hash algorithm</option>
- <option value="RS256" <#if 'RS256'==model.idTokenSigningAlgorithm >selected</#if>>RSASSA using SHA-256 hash algorithm</option>
- <option value="RS384" <#if 'RS384'==model.idTokenSigningAlgorithm >selected</#if>>RSASSA using SHA-384 hash algorithm</option>
- <option value="RS512" <#if 'RS256'==model.idTokenSigningAlgorithm >selected</#if>>RSASSA using SHA-512 hash algorithm</option>
- <option value="ES256" <#if 'ES256'==model.idTokenSigningAlgorithm >selected</#if>>ECDSA using P-256 curve and SHA-256 hash algorithm</option>
- <option value="ES384" <#if 'ES384'==model.idTokenSigningAlgorithm >selected</#if>>ECDSA using P-384 curve and SHA-384 hash algorithm</option>
- <option value="ES512" <#if 'ES512'==model.idTokenSigningAlgorithm >selected</#if>>ECDSA using P-512 curve and SHA-512 hash algorithm</option>
- </select>
- </td>
- <th><@locale code="apps.oauth.connect.userInfoSigningAlgorithm" />:</th>
- <td >
- <select id="userInfoSigningAlgorithm" name="userInfoSigningAlgorithm" class="form-control form-select">
- <option value="none" <#if 'none' ==model.userInfoSigningAlgorithm >selected</#if>>No digital signature</option>
- <option value="HS256" <#if 'HS256'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-256 hash algorithm</option>
- <option value="HS384" <#if 'HS384'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-384 hash algorithm</option>
- <option value="HS512" <#if 'HS512'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-512 hash algorithm</option>
- <option value="RS256" <#if 'RS256'==model.userInfoSigningAlgorithm >selected</#if>>RSASSA using SHA-256 hash algorithm</option>
- <option value="RS384" <#if 'RS384'==model.userInfoSigningAlgorithm >selected</#if>>RSASSA using SHA-384 hash algorithm</option>
- <option value="RS512" <#if 'RS256'==model.userInfoSigningAlgorithm >selected</#if>>RSASSA using SHA-512 hash algorithm</option>
- <option value="ES256" <#if 'ES256'==model.userInfoSigningAlgorithm >selected</#if>>ECDSA using P-256 curve and SHA-256 hash algorithm</option>
- <option value="ES384" <#if 'ES384'==model.userInfoSigningAlgorithm >selected</#if>>ECDSA using P-384 curve and SHA-384 hash algorithm</option>
- <option value="ES512" <#if 'ES512'==model.userInfoSigningAlgorithm >selected</#if>>ECDSA using P-512 curve and SHA-512 hash algorithm</option>
- </select>
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.connect.jwksUri" />:</th>
- <td colspan =3>
- <input type="text" class="form-control" id="jwksUri" name="jwksUri" title="" value="${model.jwksUri!}"/>
- </td>
- </tr>
- <tr>
- <th><@locale code="apps.oauth.connect.idTokenEncryptedAlgorithm" />:</th>
- <td >
- <select id="idTokenEncryptedAlgorithm" name="idTokenEncryptedAlgorithm" class="form-control form-select">
- <option value="none" <#if 'none'==model.idTokenEncryptedAlgorithm >selected</#if> >No encryption</option>
- <option value="RSA1_5" <#if 'RSA1_5'==model.idTokenEncryptedAlgorithm >selected</#if> >RSAES-PKCS1-V1_5</option>
- <option value="RSA-OAEP" <#if 'RSA-OAEP'==model.idTokenEncryptedAlgorithm >selected</#if>>RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
- <option value="A128KW" <#if 'A128KW'==model.idTokenEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 128 bit keys </option>
- <option value="A256KW" <#if 'A256KW'==model.idTokenEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 256 bit keys</option>
- <option value="dir" <#if 'dir'==model.idTokenEncryptedAlgorithm >selected</#if>>Direct use of a shared symmetric key as the Content Master Key (CMK) for the block encryption step</option>
- <option value="ECDH-ES" <#if 'ECDH-ES'==model.idTokenEncryptedAlgorithm >selected</#if>>Elliptic Curve Diffie-Hellman Ephemeral Static key agreement using the Concat KDF, with the agreed-upon key being used directly as the Content Master Key (CMK)</option>
- <option value="ECDH-ES+A128KW" <#if 'ECDH-ES+A128KW'==model.idTokenEncryptedAlgorithm >selected</#if>>Elliptic Curve Diffie-Hellman Ephemeral Static key agreement per ECDH-ES and Section 4.7, but where the agreed-upon key is used to wrap the Content Master Key (CMK) with the A128KW function</option>
- <option value="ECDH-ES+A256KW" <#if 'ECDH-ES+A256KW'==model.idTokenEncryptedAlgorithm >selected</#if>>Elliptic Curve Diffie-Hellman Ephemeral Static key agreement per ECDH-ES and Section 4.7, but where the agreed-upon key is used to wrap the Content Master Key (CMK) with the A256KW function</option>
-
- </select>
- </td>
- <th><@locale code="apps.oauth.connect.userInfoEncryptedAlgorithm" />:</th>
- <td >
- <select id="userInfoEncryptedAlgorithm" name="userInfoEncryptedAlgorithm" class="form-control form-select">
- <option value="none" <#if 'none'==model.userInfoEncryptedAlgorithm >selected</#if> >No encryption</option>
- <option value="RSA1_5" <#if 'RSA1_5'==model.userInfoEncryptedAlgorithm >selected</#if> >RSAES-PKCS1-V1_5</option>
- <option value="RSA-OAEP" <#if 'RSA-OAEP'==model.userInfoEncryptedAlgorithm >selected</#if>>RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
- <option value="A128KW" <#if 'A128KW'==model.userInfoEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 128 bit keys </option>
- <option value="A256KW" <#if 'A256KW'==model.userInfoEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 256 bit keys</option>
- <option value="dir" <#if 'dir'==model.userInfoEncryptedAlgorithm >selected</#if>>Direct use of a shared symmetric key as the Content Master Key (CMK) for the block encryption step</option>
- <option value="ECDH-ES" <#if 'ECDH-ES'==model.userInfoEncryptedAlgorithm >selected</#if>>Elliptic Curve Diffie-Hellman Ephemeral Static key agreement using the Concat KDF, with the agreed-upon key being used directly as the Content Master Key (CMK)</option>
- <option value="ECDH-ES+A128KW" <#if 'ECDH-ES+A128KW'==model.userInfoEncryptedAlgorithm >selected</#if>>Elliptic Curve Diffie-Hellman Ephemeral Static key agreement per ECDH-ES and Section 4.7, but where the agreed-upon key is used to wrap the Content Master Key (CMK) with the A128KW function</option>
- <option value="ECDH-ES+A256KW" <#if 'ECDH-ES+A256KW'==model.userInfoEncryptedAlgorithm >selected</#if>>Elliptic Curve Diffie-Hellman Ephemeral Static key agreement per ECDH-ES and Section 4.7, but where the agreed-upon key is used to wrap the Content Master Key (CMK) with the A256KW function</option>
-
- </select>
- </td>
- </tr>
-
- <tr>
- <th><@locale code="apps.oauth.connect.idTokenEncryptionMethod" />:</th>
- <td >
- <select id="idTokenEncryptionMethod" name="idTokenEncryptionMethod" class="form-control form-select">
- <option value="none" <#if 'none'==model.idTokenEncryptionMethod >selected</#if>>No encryption</option>
- <option value="A128CBC+HS256" <#if 'A128CBC+HS256'==model.idTokenEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in Cipher Block Chaining (CBC) mode with PKCS #5 padding with an integrity calculation using HMAC SHA-256, using a 256 bit CMK (and 128 bit CEK)</option>
- <option value="A256CBC+HS512" <#if 'A256CBC+HS512'==model.idTokenEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in CBC mode with PKCS #5 padding with an integrity calculation using HMAC SHA-512, using a 512 bit CMK (and 256 bit CEK)</option>
- <option value="A128GCM" <#if 'A128GCM'==model.idTokenEncryptionMethod >selected</#if>>AES GCM using 128 bit keys</option>
- <option value="A256GCM" <#if 'A256GCM'==model.idTokenEncryptionMethod >selected</#if>>AES GCM using 256 bit keys</option>
- </select>
- </td>
- <th><@locale code="apps.oauth.connect.userInfoEncryptionMethod" />:</th>
- <td >
- <select id="userInfoEncryptionMethod" name="userInfoEncryptionMethod" class="form-control form-select">
- <option value="none" <#if 'none'==model.userInfoEncryptionMethod >selected</#if>>No encryption</option>
- <option value="A128CBC+HS256" <#if 'A128CBC+HS256'==model.userInfoEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in Cipher Block Chaining (CBC) mode with PKCS #5 padding with an integrity calculation using HMAC SHA-256, using a 256 bit CMK (and 128 bit CEK)</option>
- <option value="A256CBC+HS512" <#if 'A256CBC+HS512'==model.userInfoEncryptionMethod >selected</#if>>Composite Authenticated Encryption algorithm using AES in CBC mode with PKCS #5 padding with an integrity calculation using HMAC SHA-512, using a 512 bit CMK (and 256 bit CEK)</option>
- <option value="A128GCM" <#if 'A128GCM'==model.userInfoEncryptionMethod >selected</#if>>AES GCM using 128 bit keys</option>
- <option value="A256GCM" <#if 'A256GCM'==model.userInfoEncryptionMethod >selected</#if>>AES GCM using 256 bit keys</option>
- </select>
- </td>
- </tr>
-
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
- </table>
- <input class="button btn btn-primary mr-3" id="submitBtn" type="submit" value="<@locale code="button.text.save" />"/>
- <input class="button btn btn-secondary mr-3" id="backBtn" type="button" value="<@locale code="button.text.close" />"/>
- </form>
- </body>
- </html>
|