appUpdate.ftl 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <!DOCTYPE HTML>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <#include "../../layout/header.ftl"/>
  5. <#include "../../layout/common.cssjs.ftl"/>
  6. <#include "../appCommonHead.ftl"/>
  7. <#setting number_format="#">
  8. </head>
  9. <body>
  10. <form id="actionForm_app" method="post" type="label" autoclose="true" closeWindow="true"
  11. action="<@base/>/apps/oauth20/update"
  12. forward="<@base/>/apps/list"
  13. enctype="multipart/form-data"
  14. class="needs-validation" novalidate>
  15. <!-- content -->
  16. <!--table-->
  17. <table width="960px" class="table table-bordered" >
  18. <tbody>
  19. <tr>
  20. <td ><#include "../appUpdateCommon.ftl"/></td>
  21. </tr>
  22. <tr>
  23. <td>
  24. <table width="960px" class="table table-bordered" >
  25. <tbody>
  26. <tr>
  27. <td colspan=4><@locale code="apps.oauth.v2.0.info" /></td>
  28. </tr>
  29. <tr>
  30. <th style="width:15%;"><@locale code="apps.oauth.v2.0.clientId" />:</th>
  31. <td style="width:35%;">
  32. <span id="clientId_text">${model.clientId}</span>
  33. <input type="hidden" class="form-control" id="clientId" name="clientId" title="" value="${model.clientId}"/>
  34. </td>
  35. <th style="width:15%;"><@locale code="apps.oauth.v2.0.clientSecret" />:</th>
  36. <td style="width:35%;">
  37. <span id="clientSecret_text">${model.clientSecret}</span>
  38. <input type="hidden" class="form-control" id="clientSecret" name="clientSecret" title="" value="${model.clientSecret}"/>
  39. </td>
  40. </tr>
  41. <tr>
  42. <th><@locale code="apps.oauth.scope" />:</th>
  43. <td colspan="3">
  44. <table class="hidetable" style="width:100%;">
  45. <tr>
  46. <td>read<input type="checkbox" id="scope_trust" name="scope" value="read" <#if model.scope?contains("read") >checked</#if> /></td>
  47. <td>write<input type="checkbox" id="scope_write" name="scope" value="write" <#if model.scope?contains('write') >checked</#if>/></td>
  48. <td>trust<input type="checkbox" id="scope_trust" name="scope" value="trust" <#if model.scope?contains('trust') >checked</#if>/></td>
  49. <td>openid<input type="checkbox" id="scope_openid" name="scope" value="openid" <#if model.scope?contains('openid') >checked</#if>/></td>
  50. <td>profile<input type="checkbox" id="scope_profile" name="scope" value="profile" <#if model.scope?contains('profile') >checked</#if>/></td>
  51. <td>email<input type="checkbox" id="scope_email" name="scope" value="email" <#if model.scope?contains('email') >checked</#if>/></td>
  52. <td>phone<input type="checkbox" id="scope_phone" name="scope" value="phone" <#if model.scope?contains('phone') >checked</#if>/></td>
  53. <td>address<input type="checkbox" id="scope_address" name="scope" value="address" <#if model.scope?contains('address') >checked</#if>/></td>
  54. <td>all<input type="checkbox" id="scope_all" name="scope" value="all" <#if model.scope?contains('all') >checked</#if>/></td>
  55. <td><b class="orange"></b><label for="scope"></label></td>
  56. </tr>
  57. </table>
  58. </td>
  59. </tr>
  60. <tr>
  61. <th><@locale code="apps.oauth.GrantTypes" />:</th>
  62. <td colspan="3">
  63. <table class="hidetable" style="width:100%;">
  64. <tr>
  65. <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>
  66. <td>password<input <#if model.authorizedGrantTypes?contains('password') >checked</#if> type="checkbox" id="grantTypes_trust" name="authorizedGrantTypes" value="password"/></td>
  67. <td>implicit<input <#if model.authorizedGrantTypes?contains('implicit') >checked</#if> type="checkbox" id="grantTypes_implicit" name="authorizedGrantTypes" value="implicit"/></td>
  68. <td>refresh_token<input <#if model.authorizedGrantTypes?contains('refresh_token') >checked</#if> type="checkbox" id="grantTypes_refresh_token" name="authorizedGrantTypes" value="refresh_token"/></td>
  69. <td>id_token<input <#if model.authorizedGrantTypes?contains('id_token') >checked</#if> type="checkbox" id="grantTypes_id_token" name="authorizedGrantTypes" value="id_token"/></td>
  70. <td>token<input <#if model.authorizedGrantTypes?contains( 'token') >checked</#if> type="checkbox" id="grantTypes_token" name="authorizedGrantTypes" value="token"/></td>
  71. </tr>
  72. </table>
  73. </td>
  74. </tr>
  75. <tr>
  76. <th><@locale code="apps.oauth.registeredRedirectUris" />:</th>
  77. <td colspan=3>
  78. <textarea class="form-control" id="registeredRedirectUris" name="registeredRedirectUris" rows="4" cols="60" required="" >${model.registeredRedirectUris}</textarea>
  79. </td>
  80. </tr>
  81. <tr>
  82. <th><@locale code="apps.oauth.accessTokenValiditySeconds" />:</th>
  83. <td >
  84. <input type="text" class="form-control" id="accessTokenValiditySeconds" name="accessTokenValiditySeconds" title="" value="${model.accessTokenValiditySeconds}"/>
  85. </td>
  86. <th><@locale code="apps.oauth.refreshTokenValiditySeconds" />:</th>
  87. <td>
  88. <input type="text" class="form-control" id="refreshTokenValiditySeconds" name="refreshTokenValiditySeconds" title="" value="${model.refreshTokenValiditySeconds}"/>
  89. </td>
  90. </tr>
  91. <tr>
  92. <th>PKCE:</th>
  93. <td >
  94. <select id="pkce" name="pkce" class="form-control form-select">
  95. <option value="yes" <#if "yes"==model.pkce?default("yes") >selected</#if>>
  96. <@locale code="common.text.yes" /></option>
  97. <option value="no" <#if 'no'==model.pkce >selected</#if>>
  98. <@locale code="common.text.no" /></option>
  99. </select>
  100. </td>
  101. <th><@locale code="apps.oauth.approvalPrompt" />:</th>
  102. <td >
  103. <select id="approvalPrompt" name="approvalPrompt" class="form-control form-select">
  104. <option value="force" <#if ""==model.approvalPrompt?default("") >selected</#if>>
  105. <@locale code="apps.oauth.approvalPrompt.force" /></option>
  106. <option value="auto" <#if 'auto'==model.approvalPrompt >selected</#if>>
  107. <@locale code="apps.oauth.approvalPrompt.auto" /></option>
  108. </select>
  109. </td>
  110. </tr>
  111. <tr>
  112. <th><@locale code="apps.oauth.connect.idTokenSigningAlgorithm" />:</th>
  113. <td >
  114. <select id="idTokenSigningAlgorithm" name="idTokenSigningAlgorithm" class="form-control form-select">
  115. <option value="none" <#if 'none' ==model.idTokenSigningAlgorithm >selected</#if>>No digital signature</option>
  116. <option value="HS256" <#if 'HS256'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-256 hash algorithm</option>
  117. <option value="HS384" <#if 'HS384'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-384 hash algorithm</option>
  118. <option value="HS512" <#if 'HS512'==model.idTokenSigningAlgorithm >selected</#if>>HMAC using SHA-512 hash algorithm</option>
  119. <option value="RS256" <#if 'RS256'==model.idTokenSigningAlgorithm >selected</#if>>RSASSA using SHA-256 hash algorithm</option>
  120. <option value="RS384" <#if 'RS384'==model.idTokenSigningAlgorithm >selected</#if>>RSASSA using SHA-384 hash algorithm</option>
  121. <option value="RS512" <#if 'RS256'==model.idTokenSigningAlgorithm >selected</#if>>RSASSA using SHA-512 hash algorithm</option>
  122. <option value="ES256" <#if 'ES256'==model.idTokenSigningAlgorithm >selected</#if>>ECDSA using P-256 curve and SHA-256 hash algorithm</option>
  123. <option value="ES384" <#if 'ES384'==model.idTokenSigningAlgorithm >selected</#if>>ECDSA using P-384 curve and SHA-384 hash algorithm</option>
  124. <option value="ES512" <#if 'ES512'==model.idTokenSigningAlgorithm >selected</#if>>ECDSA using P-512 curve and SHA-512 hash algorithm</option>
  125. </select>
  126. </td>
  127. <th><@locale code="apps.oauth.connect.userInfoSigningAlgorithm" />:</th>
  128. <td >
  129. <select id="userInfoSigningAlgorithm" name="userInfoSigningAlgorithm" class="form-control form-select">
  130. <option value="none" <#if 'none' ==model.userInfoSigningAlgorithm >selected</#if>>No digital signature</option>
  131. <option value="HS256" <#if 'HS256'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-256 hash algorithm</option>
  132. <option value="HS384" <#if 'HS384'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-384 hash algorithm</option>
  133. <option value="HS512" <#if 'HS512'==model.userInfoSigningAlgorithm >selected</#if>>HMAC using SHA-512 hash algorithm</option>
  134. <option value="RS256" <#if 'RS256'==model.userInfoSigningAlgorithm >selected</#if>>RSASSA using SHA-256 hash algorithm</option>
  135. <option value="RS384" <#if 'RS384'==model.userInfoSigningAlgorithm >selected</#if>>RSASSA using SHA-384 hash algorithm</option>
  136. <option value="RS512" <#if 'RS256'==model.userInfoSigningAlgorithm >selected</#if>>RSASSA using SHA-512 hash algorithm</option>
  137. <option value="ES256" <#if 'ES256'==model.userInfoSigningAlgorithm >selected</#if>>ECDSA using P-256 curve and SHA-256 hash algorithm</option>
  138. <option value="ES384" <#if 'ES384'==model.userInfoSigningAlgorithm >selected</#if>>ECDSA using P-384 curve and SHA-384 hash algorithm</option>
  139. <option value="ES512" <#if 'ES512'==model.userInfoSigningAlgorithm >selected</#if>>ECDSA using P-512 curve and SHA-512 hash algorithm</option>
  140. </select>
  141. </td>
  142. </tr>
  143. <tr>
  144. <th><@locale code="apps.oauth.connect.jwksUri" />:</th>
  145. <td colspan =3>
  146. <input type="text" class="form-control" id="jwksUri" name="jwksUri" title="" value="${model.jwksUri!}"/>
  147. </td>
  148. </tr>
  149. <tr>
  150. <th><@locale code="apps.oauth.connect.idTokenEncryptedAlgorithm" />:</th>
  151. <td >
  152. <select id="idTokenEncryptedAlgorithm" name="idTokenEncryptedAlgorithm" class="form-control form-select">
  153. <option value="none" <#if 'none'==model.idTokenEncryptedAlgorithm >selected</#if> >No encryption</option>
  154. <option value="RSA1_5" <#if 'RSA1_5'==model.idTokenEncryptedAlgorithm >selected</#if> >RSAES-PKCS1-V1_5</option>
  155. <option value="RSA-OAEP" <#if 'RSA-OAEP'==model.idTokenEncryptedAlgorithm >selected</#if>>RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
  156. <option value="A128KW" <#if 'A128KW'==model.idTokenEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 128 bit keys </option>
  157. <option value="A256KW" <#if 'A256KW'==model.idTokenEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 256 bit keys</option>
  158. <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>
  159. <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>
  160. <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>
  161. <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>
  162. </select>
  163. </td>
  164. <th><@locale code="apps.oauth.connect.userInfoEncryptedAlgorithm" />:</th>
  165. <td >
  166. <select id="userInfoEncryptedAlgorithm" name="userInfoEncryptedAlgorithm" class="form-control form-select">
  167. <option value="none" <#if 'none'==model.userInfoEncryptedAlgorithm >selected</#if> >No encryption</option>
  168. <option value="RSA1_5" <#if 'RSA1_5'==model.userInfoEncryptedAlgorithm >selected</#if> >RSAES-PKCS1-V1_5</option>
  169. <option value="RSA-OAEP" <#if 'RSA-OAEP'==model.userInfoEncryptedAlgorithm >selected</#if>>RSAES using Optimal Asymmetric Encryption Padding (OAEP)</option>
  170. <option value="A128KW" <#if 'A128KW'==model.userInfoEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 128 bit keys </option>
  171. <option value="A256KW" <#if 'A256KW'==model.userInfoEncryptedAlgorithm >selected</#if>>AES Key Wrap Algorithm using 256 bit keys</option>
  172. <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>
  173. <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>
  174. <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>
  175. <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>
  176. </select>
  177. </td>
  178. </tr>
  179. <tr>
  180. <th><@locale code="apps.oauth.connect.idTokenEncryptionMethod" />:</th>
  181. <td >
  182. <select id="idTokenEncryptionMethod" name="idTokenEncryptionMethod" class="form-control form-select">
  183. <option value="none" <#if 'none'==model.idTokenEncryptionMethod >selected</#if>>No encryption</option>
  184. <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>
  185. <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>
  186. <option value="A128GCM" <#if 'A128GCM'==model.idTokenEncryptionMethod >selected</#if>>AES GCM using 128 bit keys</option>
  187. <option value="A256GCM" <#if 'A256GCM'==model.idTokenEncryptionMethod >selected</#if>>AES GCM using 256 bit keys</option>
  188. </select>
  189. </td>
  190. <th><@locale code="apps.oauth.connect.userInfoEncryptionMethod" />:</th>
  191. <td >
  192. <select id="userInfoEncryptionMethod" name="userInfoEncryptionMethod" class="form-control form-select">
  193. <option value="none" <#if 'none'==model.userInfoEncryptionMethod >selected</#if>>No encryption</option>
  194. <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>
  195. <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>
  196. <option value="A128GCM" <#if 'A128GCM'==model.userInfoEncryptionMethod >selected</#if>>AES GCM using 128 bit keys</option>
  197. <option value="A256GCM" <#if 'A256GCM'==model.userInfoEncryptionMethod >selected</#if>>AES GCM using 256 bit keys</option>
  198. </select>
  199. </td>
  200. </tr>
  201. </tbody>
  202. </table>
  203. </td>
  204. </tr>
  205. </tbody>
  206. </table>
  207. <input class="button btn btn-primary mr-3" id="submitBtn" type="submit" value="<@locale code="button.text.save" />"/>
  208. <input class="button btn btn-secondary mr-3" id="backBtn" type="button" value="<@locale code="button.text.close" />"/>
  209. </form>
  210. </body>
  211. </html>