realm-import-template.yaml.j2 85 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959
  1. apiVersion: k8s.keycloak.org/v2alpha1
  2. kind: KeycloakRealmImport
  3. metadata:
  4. name: {{ rhbk.name | default('sso') }}-{{ rhbk.realm | default('sample-realm') }}-import
  5. namespace: {{ rhbk.namespace | default('keycloak') }}
  6. spec:
  7. keycloakCRName: {{ rhbk.name | default('sso') }}
  8. realm:
  9. id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  10. realm: {{ rhbk.realm | default('sample-realm') }}
  11. notBefore: 0
  12. defaultSignatureAlgorithm: RS256
  13. revokeRefreshToken: false
  14. refreshTokenMaxReuse: 0
  15. accessTokenLifespan: 300
  16. accessTokenLifespanForImplicitFlow: 900
  17. ssoSessionIdleTimeout: 1800
  18. ssoSessionMaxLifespan: 36000
  19. ssoSessionIdleTimeoutRememberMe: 0
  20. ssoSessionMaxLifespanRememberMe: 0
  21. offlineSessionIdleTimeout: 2592000
  22. offlineSessionMaxLifespanEnabled: false
  23. offlineSessionMaxLifespan: 5184000
  24. clientSessionIdleTimeout: 0
  25. clientSessionMaxLifespan: 0
  26. clientOfflineSessionIdleTimeout: 0
  27. clientOfflineSessionMaxLifespan: 0
  28. accessCodeLifespan: 60
  29. accessCodeLifespanUserAction: 300
  30. accessCodeLifespanLogin: 1800
  31. actionTokenGeneratedByAdminLifespan: 43200
  32. actionTokenGeneratedByUserLifespan: 300
  33. oauth2DeviceCodeLifespan: 600
  34. oauth2DevicePollingInterval: 5
  35. enabled: true
  36. sslRequired: external
  37. registrationAllowed: false
  38. registrationEmailAsUsername: false
  39. rememberMe: false
  40. verifyEmail: false
  41. loginWithEmailAllowed: false
  42. duplicateEmailsAllowed: false
  43. resetPasswordAllowed: false
  44. editUsernameAllowed: false
  45. bruteForceProtected: false
  46. permanentLockout: false
  47. maxTemporaryLockouts: 0
  48. bruteForceStrategy: MULTIPLE
  49. maxFailureWaitSeconds: 900
  50. minimumQuickLoginWaitSeconds: 60
  51. waitIncrementSeconds: 60
  52. quickLoginCheckMilliSeconds: 1000
  53. maxDeltaTimeSeconds: 43200
  54. failureFactor: 30
  55. roles:
  56. realm:
  57. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-rr-offline_access') | ansible.builtin.to_uuid }}
  58. name: offline_access
  59. description: ${role_offline-access}
  60. composite: false
  61. clientRole: false
  62. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  63. attributes: {}
  64. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-rr-default-roles-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  65. name: default-roles-{{ rhbk.realm | default('sample-realm') }}
  66. description: ${role_default-roles}
  67. composite: true
  68. composites:
  69. realm:
  70. - offline_access
  71. - uma_authorization
  72. client:
  73. account:
  74. - view-profile
  75. - manage-account
  76. clientRole: false
  77. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  78. attributes: {}
  79. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-rr-uma_authorization') | ansible.builtin.to_uuid }}
  80. name: uma_authorization
  81. description: ${role_uma_authorization}
  82. composite: false
  83. clientRole: false
  84. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  85. attributes: {}
  86. client:
  87. realm-management:
  88. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-create-client') | ansible.builtin.to_uuid }}
  89. name: create-client
  90. description: ${role_create-client}
  91. composite: false
  92. clientRole: true
  93. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  94. attributes: {}
  95. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-query-clients') | ansible.builtin.to_uuid }}
  96. name: query-clients
  97. description: ${role_query-clients}
  98. composite: false
  99. clientRole: true
  100. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  101. attributes: {}
  102. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-view-identity-providers') | ansible.builtin.to_uuid }}
  103. name: view-identity-providers
  104. description: ${role_view-identity-providers}
  105. composite: false
  106. clientRole: true
  107. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  108. attributes: {}
  109. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-impersonation') | ansible.builtin.to_uuid }}
  110. name: impersonation
  111. description: ${role_impersonation}
  112. composite: false
  113. clientRole: true
  114. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  115. attributes: {}
  116. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-view-authorization') | ansible.builtin.to_uuid }}
  117. name: view-authorization
  118. description: ${role_view-authorization}
  119. composite: false
  120. clientRole: true
  121. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  122. attributes: {}
  123. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-view-realm') | ansible.builtin.to_uuid }}
  124. name: view-realm
  125. description: ${role_view-realm}
  126. composite: false
  127. clientRole: true
  128. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  129. attributes: {}
  130. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-manage-clients') | ansible.builtin.to_uuid }}
  131. name: manage-clients
  132. description: ${role_manage-clients}
  133. composite: false
  134. clientRole: true
  135. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  136. attributes: {}
  137. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-manage-users') | ansible.builtin.to_uuid }}
  138. name: manage-users
  139. description: ${role_manage-users}
  140. composite: false
  141. clientRole: true
  142. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  143. attributes: {}
  144. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-query-realms') | ansible.builtin.to_uuid }}
  145. name: query-realms
  146. description: ${role_query-realms}
  147. composite: false
  148. clientRole: true
  149. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  150. attributes: {}
  151. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-view-users') | ansible.builtin.to_uuid }}
  152. name: view-users
  153. description: ${role_view-users}
  154. composite: true
  155. composites:
  156. client:
  157. realm-management:
  158. - query-groups
  159. - query-users
  160. clientRole: true
  161. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  162. attributes: {}
  163. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-realm-admin') | ansible.builtin.to_uuid }}
  164. name: realm-admin
  165. description: ${role_realm-admin}
  166. composite: true
  167. composites:
  168. client:
  169. realm-management:
  170. - create-client
  171. - query-clients
  172. - view-identity-providers
  173. - impersonation
  174. - view-authorization
  175. - view-realm
  176. - manage-users
  177. - manage-clients
  178. - query-realms
  179. - view-users
  180. - manage-realm
  181. - manage-authorization
  182. - query-groups
  183. - manage-events
  184. - manage-identity-providers
  185. - view-clients
  186. - view-events
  187. - query-users
  188. clientRole: true
  189. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  190. attributes: {}
  191. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-manage-realm') | ansible.builtin.to_uuid }}
  192. name: manage-realm
  193. description: ${role_manage-realm}
  194. composite: false
  195. clientRole: true
  196. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  197. attributes: {}
  198. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-manage-authorization') | ansible.builtin.to_uuid }}
  199. name: manage-authorization
  200. description: ${role_manage-authorization}
  201. composite: false
  202. clientRole: true
  203. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  204. attributes: {}
  205. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-query-groups') | ansible.builtin.to_uuid }}
  206. name: query-groups
  207. description: ${role_query-groups}
  208. composite: false
  209. clientRole: true
  210. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  211. attributes: {}
  212. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-manage-events') | ansible.builtin.to_uuid }}
  213. name: manage-events
  214. description: ${role_manage-events}
  215. composite: false
  216. clientRole: true
  217. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  218. attributes: {}
  219. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-manage-identity-providers') | ansible.builtin.to_uuid }}
  220. name: manage-identity-providers
  221. description: ${role_manage-identity-providers}
  222. composite: false
  223. clientRole: true
  224. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  225. attributes: {}
  226. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-view-clients') | ansible.builtin.to_uuid }}
  227. name: view-clients
  228. description: ${role_view-clients}
  229. composite: true
  230. composites:
  231. client:
  232. realm-management:
  233. - query-clients
  234. clientRole: true
  235. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  236. attributes: {}
  237. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-query-users') | ansible.builtin.to_uuid }}
  238. name: query-users
  239. description: ${role_query-users}
  240. composite: false
  241. clientRole: true
  242. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  243. attributes: {}
  244. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cr-view-events') | ansible.builtin.to_uuid }}
  245. name: view-events
  246. description: ${role_view-events}
  247. composite: false
  248. clientRole: true
  249. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  250. attributes: {}
  251. security-admin-console: []
  252. {% for client in rhbk.clients %}
  253. {{ client.id }}: []
  254. {% endfor %}
  255. admin-cli: []
  256. account-console: []
  257. broker:
  258. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-br-read-token') | ansible.builtin.to_uuid }}
  259. name: read-token
  260. description: ${role_read-token}
  261. composite: false
  262. clientRole: true
  263. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-broker') | ansible.builtin.to_uuid }}
  264. attributes: {}
  265. account:
  266. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-delete-account') | ansible.builtin.to_uuid }}
  267. name: delete-account
  268. description: ${role_delete-account}
  269. composite: false
  270. clientRole: true
  271. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  272. attributes: {}
  273. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-manage-consent') | ansible.builtin.to_uuid }}
  274. name: manage-consent
  275. description: ${role_manage-consent}
  276. composite: true
  277. composites:
  278. client:
  279. account:
  280. - view-consent
  281. clientRole: true
  282. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  283. attributes: {}
  284. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-view-profile') | ansible.builtin.to_uuid }}
  285. name: view-profile
  286. description: ${role_view-profile}
  287. composite: false
  288. clientRole: true
  289. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  290. attributes: {}
  291. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-manage-account') | ansible.builtin.to_uuid }}
  292. name: manage-account
  293. description: ${role_manage-account}
  294. composite: true
  295. composites:
  296. client:
  297. account:
  298. - manage-account-links
  299. clientRole: true
  300. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  301. attributes: {}
  302. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-manage-account-links') | ansible.builtin.to_uuid }}
  303. name: manage-account-links
  304. description: ${role_manage-account-links}
  305. composite: false
  306. clientRole: true
  307. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  308. attributes: {}
  309. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-view-applications') | ansible.builtin.to_uuid }}
  310. name: view-applications
  311. description: ${role_view-applications}
  312. composite: false
  313. clientRole: true
  314. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  315. attributes: {}
  316. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-view-groups') | ansible.builtin.to_uuid }}
  317. name: view-groups
  318. description: ${role_view-groups}
  319. composite: false
  320. clientRole: true
  321. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  322. attributes: {}
  323. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-ar-view-consent') | ansible.builtin.to_uuid }}
  324. name: view-consent
  325. description: ${role_view-consent}
  326. composite: false
  327. clientRole: true
  328. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  329. attributes: {}
  330. groups: []
  331. defaultRole:
  332. id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-default-roles-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  333. name: default-roles-{{ (rhbk.realm | default('sample-realm')) }}
  334. description: ${role_default-roles}
  335. composite: true
  336. clientRole: false
  337. containerId: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm'))) | ansible.builtin.to_uuid }}
  338. requiredCredentials:
  339. - password
  340. otpPolicyType: totp
  341. otpPolicyAlgorithm: HmacSHA1
  342. otpPolicyInitialCounter: 0
  343. otpPolicyDigits: 6
  344. otpPolicyLookAheadWindow: 1
  345. otpPolicyPeriod: 30
  346. otpPolicyCodeReusable: false
  347. otpSupportedApplications:
  348. - totpAppFreeOTPName
  349. - totpAppGoogleName
  350. - totpAppMicrosoftAuthenticatorName
  351. localizationTexts: {}
  352. webAuthnPolicyRpEntityName: keycloak
  353. webAuthnPolicySignatureAlgorithms:
  354. - ES256
  355. - RS256
  356. webAuthnPolicyRpId: ""
  357. webAuthnPolicyAttestationConveyancePreference: not specified
  358. webAuthnPolicyAuthenticatorAttachment: not specified
  359. webAuthnPolicyRequireResidentKey: not specified
  360. webAuthnPolicyUserVerificationRequirement: not specified
  361. webAuthnPolicyCreateTimeout: 0
  362. webAuthnPolicyAvoidSameAuthenticatorRegister: false
  363. webAuthnPolicyAcceptableAaguids: []
  364. webAuthnPolicyExtraOrigins: []
  365. webAuthnPolicyPasswordlessRpEntityName: keycloak
  366. webAuthnPolicyPasswordlessSignatureAlgorithms:
  367. - ES256
  368. - RS256
  369. webAuthnPolicyPasswordlessRpId: ""
  370. webAuthnPolicyPasswordlessAttestationConveyancePreference: not specified
  371. webAuthnPolicyPasswordlessAuthenticatorAttachment: not specified
  372. webAuthnPolicyPasswordlessRequireResidentKey: not specified
  373. webAuthnPolicyPasswordlessUserVerificationRequirement: not specified
  374. webAuthnPolicyPasswordlessCreateTimeout: 0
  375. webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister: false
  376. webAuthnPolicyPasswordlessAcceptableAaguids: []
  377. webAuthnPolicyPasswordlessExtraOrigins: []
  378. scopeMappings:
  379. - clientScope: offline_access
  380. roles:
  381. - offline_access
  382. clientScopeMappings:
  383. account:
  384. - client: account-console
  385. roles:
  386. - manage-account
  387. - view-groups
  388. clients:
  389. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account') | ansible.builtin.to_uuid }}
  390. clientId: account
  391. name: ${client_account}
  392. rootUrl: ${authBaseUrl}
  393. baseUrl: /realms/{{ rhbk.realm | default('sample-realm') }}/account/
  394. surrogateAuthRequired: false
  395. enabled: true
  396. alwaysDisplayInConsole: false
  397. clientAuthenticatorType: client-secret
  398. redirectUris:
  399. - /realms/{{ rhbk.realm | default('sample-realm') }}/account/*
  400. webOrigins: []
  401. notBefore: 0
  402. bearerOnly: false
  403. consentRequired: false
  404. standardFlowEnabled: true
  405. implicitFlowEnabled: false
  406. directAccessGrantsEnabled: false
  407. serviceAccountsEnabled: false
  408. publicClient: true
  409. frontchannelLogout: false
  410. protocol: openid-connect
  411. attributes:
  412. realm_client: "false"
  413. post.logout.redirect.uris: +
  414. authenticationFlowBindingOverrides: {}
  415. fullScopeAllowed: false
  416. nodeReRegistrationTimeout: 0
  417. defaultClientScopes:
  418. - web-origins
  419. - acr
  420. - roles
  421. - profile
  422. - basic
  423. - email
  424. optionalClientScopes:
  425. - address
  426. - phone
  427. - organization
  428. - offline_access
  429. - microprofile-jwt
  430. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account-console') | ansible.builtin.to_uuid }}
  431. clientId: account-console
  432. name: ${client_account-console}
  433. rootUrl: ${authBaseUrl}
  434. baseUrl: /realms/{{ rhbk.realm | default('sample-realm') }}/account/
  435. surrogateAuthRequired: false
  436. enabled: true
  437. alwaysDisplayInConsole: false
  438. clientAuthenticatorType: client-secret
  439. redirectUris:
  440. - /realms/{{ rhbk.realm | default('sample-realm') }}/account/*
  441. webOrigins: []
  442. notBefore: 0
  443. bearerOnly: false
  444. consentRequired: false
  445. standardFlowEnabled: true
  446. implicitFlowEnabled: false
  447. directAccessGrantsEnabled: false
  448. serviceAccountsEnabled: false
  449. publicClient: true
  450. frontchannelLogout: false
  451. protocol: openid-connect
  452. attributes:
  453. realm_client: "false"
  454. post.logout.redirect.uris: +
  455. pkce.code.challenge.method: S256
  456. authenticationFlowBindingOverrides: {}
  457. fullScopeAllowed: false
  458. nodeReRegistrationTimeout: 0
  459. protocolMappers:
  460. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-account-console-pm-audience-resolve') | ansible.builtin.to_uuid }}
  461. name: audience resolve
  462. protocol: openid-connect
  463. protocolMapper: oidc-audience-resolve-mapper
  464. consentRequired: false
  465. config: {}
  466. defaultClientScopes:
  467. - web-origins
  468. - acr
  469. - roles
  470. - profile
  471. - basic
  472. - email
  473. optionalClientScopes:
  474. - address
  475. - phone
  476. - organization
  477. - offline_access
  478. - microprofile-jwt
  479. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-admin-cli') | ansible.builtin.to_uuid }}
  480. clientId: admin-cli
  481. name: ${client_admin-cli}
  482. surrogateAuthRequired: false
  483. enabled: true
  484. alwaysDisplayInConsole: false
  485. clientAuthenticatorType: client-secret
  486. redirectUris: []
  487. webOrigins: []
  488. notBefore: 0
  489. bearerOnly: false
  490. consentRequired: false
  491. standardFlowEnabled: false
  492. implicitFlowEnabled: false
  493. directAccessGrantsEnabled: true
  494. serviceAccountsEnabled: false
  495. publicClient: true
  496. frontchannelLogout: false
  497. protocol: openid-connect
  498. attributes:
  499. realm_client: "false"
  500. client.use.lightweight.access.token.enabled: "true"
  501. authenticationFlowBindingOverrides: {}
  502. fullScopeAllowed: true
  503. nodeReRegistrationTimeout: 0
  504. defaultClientScopes:
  505. - web-origins
  506. - acr
  507. - roles
  508. - profile
  509. - basic
  510. - email
  511. optionalClientScopes:
  512. - address
  513. - phone
  514. - organization
  515. - offline_access
  516. - microprofile-jwt
  517. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-broker') | ansible.builtin.to_uuid }}
  518. clientId: broker
  519. name: ${client_broker}
  520. surrogateAuthRequired: false
  521. enabled: true
  522. alwaysDisplayInConsole: false
  523. clientAuthenticatorType: client-secret
  524. redirectUris: []
  525. webOrigins: []
  526. notBefore: 0
  527. bearerOnly: true
  528. consentRequired: false
  529. standardFlowEnabled: true
  530. implicitFlowEnabled: false
  531. directAccessGrantsEnabled: false
  532. serviceAccountsEnabled: false
  533. publicClient: false
  534. frontchannelLogout: false
  535. protocol: openid-connect
  536. attributes:
  537. realm_client: "true"
  538. authenticationFlowBindingOverrides: {}
  539. fullScopeAllowed: false
  540. nodeReRegistrationTimeout: 0
  541. defaultClientScopes:
  542. - web-origins
  543. - acr
  544. - roles
  545. - profile
  546. - basic
  547. - email
  548. optionalClientScopes:
  549. - address
  550. - phone
  551. - organization
  552. - offline_access
  553. - microprofile-jwt
  554. {% for client in rhbk.clients %}
  555. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-' + client.id) | ansible.builtin.to_uuid }}
  556. clientId: {{ client.id }}
  557. name: "{{ client.name | default(client.id) }}"
  558. description: ""
  559. rootUrl: {{ client.base_url }}
  560. adminUrl: {{ client.base_url }}
  561. baseUrl: ""
  562. surrogateAuthRequired: false
  563. enabled: true
  564. alwaysDisplayInConsole: false
  565. clientAuthenticatorType: client-secret
  566. {% if client.secret is defined %}
  567. secret: '{{ client.secret }}'
  568. {% endif %}
  569. redirectUris:
  570. - {{ client.base_url }}/*
  571. webOrigins:
  572. - {{ client.base_url }}
  573. notBefore: 0
  574. bearerOnly: false
  575. consentRequired: false
  576. standardFlowEnabled: true
  577. implicitFlowEnabled: false
  578. directAccessGrantsEnabled: {{ client.direct_grants | default(true) | bool }}
  579. serviceAccountsEnabled: false
  580. publicClient: false
  581. frontchannelLogout: true
  582. protocol: openid-connect
  583. attributes:
  584. client.secret.creation.time: "1755544217"
  585. request.object.signature.alg: any
  586. request.object.encryption.alg: any
  587. client.introspection.response.allow.jwt.claim.enabled: "false"
  588. standard.token.exchange.enabled: "false"
  589. frontchannel.logout.session.required: "true"
  590. oauth2.device.authorization.grant.enabled: "false"
  591. use.jwks.url: "false"
  592. backchannel.logout.revoke.offline.tokens: "false"
  593. use.refresh.tokens: "true"
  594. realm_client: "false"
  595. oidc.ciba.grant.enabled: "false"
  596. client.use.lightweight.access.token.enabled: "false"
  597. backchannel.logout.session.required: "true"
  598. client_credentials.use_refresh_token: "false"
  599. request.object.required: not required
  600. access.token.header.type.rfc9068: "false"
  601. acr.loa.map: '{}'
  602. require.pushed.authorization.requests: "false"
  603. tls.client.certificate.bound.access.tokens: "false"
  604. display.on.consent.screen: "false"
  605. request.object.encryption.enc: any
  606. token.response.type.bearer.lower-case: "false"
  607. authenticationFlowBindingOverrides: {}
  608. fullScopeAllowed: true
  609. nodeReRegistrationTimeout: -1
  610. {% if client.map_groups | default(true) %}
  611. protocolMappers:
  612. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-openshift-pm-groups') | ansible.builtin.to_uuid }}
  613. name: groups
  614. protocol: openid-connect
  615. protocolMapper: oidc-group-membership-mapper
  616. consentRequired: false
  617. config:
  618. claim.name: groups
  619. full.path: "false"
  620. id.token.claim: "true"
  621. access.token.claim: "true"
  622. userinfo.token.claim: "true"
  623. introspection.token.claim: "true"
  624. lightweight.claim: "false"
  625. multivalued: "true"
  626. {% endif %}
  627. defaultClientScopes:
  628. - web-origins
  629. - acr
  630. - roles
  631. - profile
  632. - basic
  633. - email
  634. optionalClientScopes:
  635. - address
  636. - phone
  637. - organization
  638. - offline_access
  639. - microprofile-jwt
  640. {% endfor %}
  641. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  642. clientId: realm-management
  643. name: ${client_realm-management}
  644. surrogateAuthRequired: false
  645. enabled: true
  646. alwaysDisplayInConsole: false
  647. clientAuthenticatorType: client-secret
  648. redirectUris: []
  649. webOrigins: []
  650. notBefore: 0
  651. bearerOnly: true
  652. consentRequired: false
  653. standardFlowEnabled: true
  654. implicitFlowEnabled: false
  655. directAccessGrantsEnabled: false
  656. serviceAccountsEnabled: false
  657. publicClient: false
  658. frontchannelLogout: false
  659. protocol: openid-connect
  660. attributes:
  661. realm_client: "true"
  662. authenticationFlowBindingOverrides: {}
  663. fullScopeAllowed: false
  664. nodeReRegistrationTimeout: 0
  665. defaultClientScopes:
  666. - web-origins
  667. - acr
  668. - roles
  669. - profile
  670. - basic
  671. - email
  672. optionalClientScopes:
  673. - address
  674. - phone
  675. - organization
  676. - offline_access
  677. - microprofile-jwt
  678. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-security-admin-console') | ansible.builtin.to_uuid }}
  679. clientId: security-admin-console
  680. name: ${client_security-admin-console}
  681. rootUrl: ${authAdminUrl}
  682. baseUrl: /admin/{{ rhbk.realm | default('sample-realm') }}/console/
  683. surrogateAuthRequired: false
  684. enabled: true
  685. alwaysDisplayInConsole: false
  686. clientAuthenticatorType: client-secret
  687. redirectUris:
  688. - /admin/{{ rhbk.realm | default('sample-realm') }}/console/*
  689. webOrigins:
  690. - +
  691. notBefore: 0
  692. bearerOnly: false
  693. consentRequired: false
  694. standardFlowEnabled: true
  695. implicitFlowEnabled: false
  696. directAccessGrantsEnabled: false
  697. serviceAccountsEnabled: false
  698. publicClient: true
  699. frontchannelLogout: false
  700. protocol: openid-connect
  701. attributes:
  702. realm_client: "false"
  703. client.use.lightweight.access.token.enabled: "true"
  704. post.logout.redirect.uris: +
  705. pkce.code.challenge.method: S256
  706. authenticationFlowBindingOverrides: {}
  707. fullScopeAllowed: true
  708. nodeReRegistrationTimeout: 0
  709. protocolMappers:
  710. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-security-admin-console-pm-locale') | ansible.builtin.to_uuid }}
  711. name: locale
  712. protocol: openid-connect
  713. protocolMapper: oidc-usermodel-attribute-mapper
  714. consentRequired: false
  715. config:
  716. introspection.token.claim: "true"
  717. userinfo.token.claim: "true"
  718. user.attribute: locale
  719. id.token.claim: "true"
  720. access.token.claim: "true"
  721. claim.name: locale
  722. jsonType.label: String
  723. defaultClientScopes:
  724. - web-origins
  725. - acr
  726. - roles
  727. - profile
  728. - basic
  729. - email
  730. optionalClientScopes:
  731. - address
  732. - phone
  733. - organization
  734. - offline_access
  735. - microprofile-jwt
  736. clientScopes:
  737. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles') | ansible.builtin.to_uuid }}
  738. name: roles
  739. description: OpenID Connect scope for add user roles to the access token
  740. protocol: openid-connect
  741. attributes:
  742. include.in.token.scope: "false"
  743. consent.screen.text: ${rolesScopeConsentText}
  744. display.on.consent.screen: "true"
  745. protocolMappers:
  746. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles-pm-client-roles') | ansible.builtin.to_uuid }}
  747. name: client roles
  748. protocol: openid-connect
  749. protocolMapper: oidc-usermodel-client-role-mapper
  750. consentRequired: false
  751. config:
  752. user.attribute: foo
  753. introspection.token.claim: "true"
  754. access.token.claim: "true"
  755. claim.name: resource_access.${client_id}.roles
  756. jsonType.label: String
  757. multivalued: "true"
  758. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles-pm-realm-roles') | ansible.builtin.to_uuid }}
  759. name: realm roles
  760. protocol: openid-connect
  761. protocolMapper: oidc-usermodel-realm-role-mapper
  762. consentRequired: false
  763. config:
  764. user.attribute: foo
  765. introspection.token.claim: "true"
  766. access.token.claim: "true"
  767. claim.name: realm_access.roles
  768. jsonType.label: String
  769. multivalued: "true"
  770. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles-pm-audience-resolve') | ansible.builtin.to_uuid }}
  771. name: audience resolve
  772. protocol: openid-connect
  773. protocolMapper: oidc-audience-resolve-mapper
  774. consentRequired: false
  775. config:
  776. introspection.token.claim: "true"
  777. access.token.claim: "true"
  778. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account') | ansible.builtin.to_uuid }}
  779. name: service_account
  780. description: Specific scope for a client enabled for service accounts
  781. protocol: openid-connect
  782. attributes:
  783. include.in.token.scope: "false"
  784. display.on.consent.screen: "false"
  785. protocolMappers:
  786. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account-pm-client-host') | ansible.builtin.to_uuid }}
  787. name: Client Host
  788. protocol: openid-connect
  789. protocolMapper: oidc-usersessionmodel-note-mapper
  790. consentRequired: false
  791. config:
  792. user.session.note: clientHost
  793. id.token.claim: "true"
  794. introspection.token.claim: "true"
  795. access.token.claim: "true"
  796. claim.name: clientHost
  797. jsonType.label: String
  798. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account-pm-client-ip') | ansible.builtin.to_uuid }}
  799. name: Client IP Address
  800. protocol: openid-connect
  801. protocolMapper: oidc-usersessionmodel-note-mapper
  802. consentRequired: false
  803. config:
  804. user.session.note: clientAddress
  805. id.token.claim: "true"
  806. introspection.token.claim: "true"
  807. access.token.claim: "true"
  808. claim.name: clientAddress
  809. jsonType.label: String
  810. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account-pm-client-id') | ansible.builtin.to_uuid }}
  811. name: Client ID
  812. protocol: openid-connect
  813. protocolMapper: oidc-usersessionmodel-note-mapper
  814. consentRequired: false
  815. config:
  816. user.session.note: client_id
  817. id.token.claim: "true"
  818. introspection.token.claim: "true"
  819. access.token.claim: "true"
  820. claim.name: client_id
  821. jsonType.label: String
  822. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-organization') | ansible.builtin.to_uuid }}
  823. name: organization
  824. description: Additional claims about the organization a subject belongs to
  825. protocol: openid-connect
  826. attributes:
  827. include.in.token.scope: "true"
  828. consent.screen.text: ${organizationScopeConsentText}
  829. display.on.consent.screen: "true"
  830. protocolMappers:
  831. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-organization-pm-organization') | ansible.builtin.to_uuid }}
  832. name: organization
  833. protocol: openid-connect
  834. protocolMapper: oidc-organization-membership-mapper
  835. consentRequired: false
  836. config:
  837. id.token.claim: "true"
  838. introspection.token.claim: "true"
  839. access.token.claim: "true"
  840. claim.name: organization
  841. jsonType.label: String
  842. multivalued: "true"
  843. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-mprof-jwt') | ansible.builtin.to_uuid }}
  844. name: microprofile-jwt
  845. description: Microprofile - JWT built-in scope
  846. protocol: openid-connect
  847. attributes:
  848. include.in.token.scope: "true"
  849. display.on.consent.screen: "false"
  850. protocolMappers:
  851. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-mprof-jwt-pm-upn') | ansible.builtin.to_uuid }}
  852. name: upn
  853. protocol: openid-connect
  854. protocolMapper: oidc-usermodel-attribute-mapper
  855. consentRequired: false
  856. config:
  857. introspection.token.claim: "true"
  858. userinfo.token.claim: "true"
  859. user.attribute: username
  860. id.token.claim: "true"
  861. access.token.claim: "true"
  862. claim.name: upn
  863. jsonType.label: String
  864. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-mprof-jwt-pm-groups') | ansible.builtin.to_uuid }}
  865. name: groups
  866. protocol: openid-connect
  867. protocolMapper: oidc-usermodel-realm-role-mapper
  868. consentRequired: false
  869. config:
  870. introspection.token.claim: "true"
  871. multivalued: "true"
  872. user.attribute: foo
  873. id.token.claim: "true"
  874. access.token.claim: "true"
  875. claim.name: groups
  876. jsonType.label: String
  877. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-saml-org') | ansible.builtin.to_uuid }}
  878. name: saml_organization
  879. description: Organization Membership
  880. protocol: saml
  881. attributes:
  882. display.on.consent.screen: "false"
  883. protocolMappers:
  884. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-saml-org-pm-organization') | ansible.builtin.to_uuid }}
  885. name: organization
  886. protocol: saml
  887. protocolMapper: saml-organization-membership-mapper
  888. consentRequired: false
  889. config: {}
  890. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-oidc') | ansible.builtin.to_uuid }}
  891. name: acr
  892. description: OpenID Connect scope for add acr (authentication context class reference) to the token
  893. protocol: openid-connect
  894. attributes:
  895. include.in.token.scope: "false"
  896. display.on.consent.screen: "false"
  897. protocolMappers:
  898. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-oidc-pm-acr-loa-level') | ansible.builtin.to_uuid }}
  899. name: acr loa level
  900. protocol: openid-connect
  901. protocolMapper: oidc-acr-mapper
  902. consentRequired: false
  903. config:
  904. id.token.claim: "true"
  905. access.token.claim: "true"
  906. introspection.token.claim: "true"
  907. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-email') | ansible.builtin.to_uuid }}
  908. name: email
  909. description: 'OpenID Connect built-in scope: email'
  910. protocol: openid-connect
  911. attributes:
  912. include.in.token.scope: "true"
  913. consent.screen.text: ${emailScopeConsentText}
  914. display.on.consent.screen: "true"
  915. protocolMappers:
  916. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-email-pm-email-vrfd') | ansible.builtin.to_uuid }}
  917. name: email verified
  918. protocol: openid-connect
  919. protocolMapper: oidc-usermodel-property-mapper
  920. consentRequired: false
  921. config:
  922. introspection.token.claim: "true"
  923. userinfo.token.claim: "true"
  924. user.attribute: emailVerified
  925. id.token.claim: "true"
  926. access.token.claim: "true"
  927. claim.name: email_verified
  928. jsonType.label: boolean
  929. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-email-pm-email') | ansible.builtin.to_uuid }}
  930. name: email
  931. protocol: openid-connect
  932. protocolMapper: oidc-usermodel-attribute-mapper
  933. consentRequired: false
  934. config:
  935. introspection.token.claim: "true"
  936. userinfo.token.claim: "true"
  937. user.attribute: email
  938. id.token.claim: "true"
  939. access.token.claim: "true"
  940. claim.name: email
  941. jsonType.label: String
  942. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-role-list') | ansible.builtin.to_uuid }}
  943. name: role_list
  944. description: SAML role list
  945. protocol: saml
  946. attributes:
  947. consent.screen.text: ${samlRoleListScopeConsentText}
  948. display.on.consent.screen: "true"
  949. protocolMappers:
  950. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-role-list-pm-role-list') | ansible.builtin.to_uuid }}
  951. name: role list
  952. protocol: saml
  953. protocolMapper: saml-role-list-mapper
  954. consentRequired: false
  955. config:
  956. single: "false"
  957. attribute.nameformat: Basic
  958. attribute.name: Role
  959. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-phone') | ansible.builtin.to_uuid }}
  960. name: phone
  961. description: 'OpenID Connect built-in scope: phone'
  962. protocol: openid-connect
  963. attributes:
  964. include.in.token.scope: "true"
  965. consent.screen.text: ${phoneScopeConsentText}
  966. display.on.consent.screen: "true"
  967. protocolMappers:
  968. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-phone-pm-phnum') | ansible.builtin.to_uuid }}
  969. name: phone number
  970. protocol: openid-connect
  971. protocolMapper: oidc-usermodel-attribute-mapper
  972. consentRequired: false
  973. config:
  974. introspection.token.claim: "true"
  975. userinfo.token.claim: "true"
  976. user.attribute: phoneNumber
  977. id.token.claim: "true"
  978. access.token.claim: "true"
  979. claim.name: phone_number
  980. jsonType.label: String
  981. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-phone-pm-phnum-vrfd') | ansible.builtin.to_uuid }}
  982. name: phone number verified
  983. protocol: openid-connect
  984. protocolMapper: oidc-usermodel-attribute-mapper
  985. consentRequired: false
  986. config:
  987. introspection.token.claim: "true"
  988. userinfo.token.claim: "true"
  989. user.attribute: phoneNumberVerified
  990. id.token.claim: "true"
  991. access.token.claim: "true"
  992. claim.name: phone_number_verified
  993. jsonType.label: boolean
  994. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-address') | ansible.builtin.to_uuid }}
  995. name: address
  996. description: 'OpenID Connect built-in scope: address'
  997. protocol: openid-connect
  998. attributes:
  999. include.in.token.scope: "true"
  1000. consent.screen.text: ${addressScopeConsentText}
  1001. display.on.consent.screen: "true"
  1002. protocolMappers:
  1003. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-address-pm-address') | ansible.builtin.to_uuid }}
  1004. name: address
  1005. protocol: openid-connect
  1006. protocolMapper: oidc-address-mapper
  1007. consentRequired: false
  1008. config:
  1009. user.attribute.formatted: formatted
  1010. user.attribute.country: country
  1011. introspection.token.claim: "true"
  1012. user.attribute.postal_code: postal_code
  1013. userinfo.token.claim: "true"
  1014. user.attribute.street: street
  1015. id.token.claim: "true"
  1016. user.attribute.region: region
  1017. access.token.claim: "true"
  1018. user.attribute.locality: locality
  1019. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-basic') | ansible.builtin.to_uuid }}
  1020. name: basic
  1021. description: OpenID Connect scope for add all basic claims to the token
  1022. protocol: openid-connect
  1023. attributes:
  1024. include.in.token.scope: "false"
  1025. display.on.consent.screen: "false"
  1026. protocolMappers:
  1027. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-basic-pm-sub') | ansible.builtin.to_uuid }}
  1028. name: sub
  1029. protocol: openid-connect
  1030. protocolMapper: oidc-sub-mapper
  1031. consentRequired: false
  1032. config:
  1033. introspection.token.claim: "true"
  1034. access.token.claim: "true"
  1035. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-basic-pm-auth-time') | ansible.builtin.to_uuid }}
  1036. name: auth_time
  1037. protocol: openid-connect
  1038. protocolMapper: oidc-usersessionmodel-note-mapper
  1039. consentRequired: false
  1040. config:
  1041. user.session.note: AUTH_TIME
  1042. id.token.claim: "true"
  1043. introspection.token.claim: "true"
  1044. access.token.claim: "true"
  1045. claim.name: auth_time
  1046. jsonType.label: long
  1047. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-offline') | ansible.builtin.to_uuid }}
  1048. name: offline_access
  1049. description: 'OpenID Connect built-in scope: offline_access'
  1050. protocol: openid-connect
  1051. attributes:
  1052. consent.screen.text: ${offlineAccessScopeConsentText}
  1053. display.on.consent.screen: "true"
  1054. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-web-origins') | ansible.builtin.to_uuid }}
  1055. name: web-origins
  1056. description: OpenID Connect scope for add allowed web origins to the access token
  1057. protocol: openid-connect
  1058. attributes:
  1059. include.in.token.scope: "false"
  1060. consent.screen.text: ""
  1061. display.on.consent.screen: "false"
  1062. protocolMappers:
  1063. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-web-origins-pm-allowed-origins') | ansible.builtin.to_uuid }}
  1064. name: allowed web origins
  1065. protocol: openid-connect
  1066. protocolMapper: oidc-allowed-origins-mapper
  1067. consentRequired: false
  1068. config:
  1069. access.token.claim: "true"
  1070. introspection.token.claim: "true"
  1071. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile') | ansible.builtin.to_uuid }}
  1072. name: profile
  1073. description: 'OpenID Connect built-in scope: profile'
  1074. protocol: openid-connect
  1075. attributes:
  1076. include.in.token.scope: "true"
  1077. consent.screen.text: ${profileScopeConsentText}
  1078. display.on.consent.screen: "true"
  1079. protocolMappers:
  1080. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-website') | ansible.builtin.to_uuid }}
  1081. name: website
  1082. protocol: openid-connect
  1083. protocolMapper: oidc-usermodel-attribute-mapper
  1084. consentRequired: false
  1085. config:
  1086. introspection.token.claim: "true"
  1087. userinfo.token.claim: "true"
  1088. user.attribute: website
  1089. id.token.claim: "true"
  1090. access.token.claim: "true"
  1091. claim.name: website
  1092. jsonType.label: String
  1093. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-full-name') | ansible.builtin.to_uuid }}
  1094. name: full name
  1095. protocol: openid-connect
  1096. protocolMapper: oidc-full-name-mapper
  1097. consentRequired: false
  1098. config:
  1099. id.token.claim: "true"
  1100. introspection.token.claim: "true"
  1101. access.token.claim: "true"
  1102. userinfo.token.claim: "true"
  1103. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-locale') | ansible.builtin.to_uuid }}
  1104. name: locale
  1105. protocol: openid-connect
  1106. protocolMapper: oidc-usermodel-attribute-mapper
  1107. consentRequired: false
  1108. config:
  1109. introspection.token.claim: "true"
  1110. userinfo.token.claim: "true"
  1111. user.attribute: locale
  1112. id.token.claim: "true"
  1113. access.token.claim: "true"
  1114. claim.name: locale
  1115. jsonType.label: String
  1116. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-picture') | ansible.builtin.to_uuid }}
  1117. name: picture
  1118. protocol: openid-connect
  1119. protocolMapper: oidc-usermodel-attribute-mapper
  1120. consentRequired: false
  1121. config:
  1122. introspection.token.claim: "true"
  1123. userinfo.token.claim: "true"
  1124. user.attribute: picture
  1125. id.token.claim: "true"
  1126. access.token.claim: "true"
  1127. claim.name: picture
  1128. jsonType.label: String
  1129. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-given-name') | ansible.builtin.to_uuid }}
  1130. name: given name
  1131. protocol: openid-connect
  1132. protocolMapper: oidc-usermodel-attribute-mapper
  1133. consentRequired: false
  1134. config:
  1135. introspection.token.claim: "true"
  1136. userinfo.token.claim: "true"
  1137. user.attribute: firstName
  1138. id.token.claim: "true"
  1139. access.token.claim: "true"
  1140. claim.name: given_name
  1141. jsonType.label: String
  1142. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-profile') | ansible.builtin.to_uuid }}
  1143. name: profile
  1144. protocol: openid-connect
  1145. protocolMapper: oidc-usermodel-attribute-mapper
  1146. consentRequired: false
  1147. config:
  1148. introspection.token.claim: "true"
  1149. userinfo.token.claim: "true"
  1150. user.attribute: profile
  1151. id.token.claim: "true"
  1152. access.token.claim: "true"
  1153. claim.name: profile
  1154. jsonType.label: String
  1155. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-birthdate') | ansible.builtin.to_uuid }}
  1156. name: birthdate
  1157. protocol: openid-connect
  1158. protocolMapper: oidc-usermodel-attribute-mapper
  1159. consentRequired: false
  1160. config:
  1161. introspection.token.claim: "true"
  1162. userinfo.token.claim: "true"
  1163. user.attribute: birthdate
  1164. id.token.claim: "true"
  1165. access.token.claim: "true"
  1166. claim.name: birthdate
  1167. jsonType.label: String
  1168. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-zoneinfo') | ansible.builtin.to_uuid }}
  1169. name: zoneinfo
  1170. protocol: openid-connect
  1171. protocolMapper: oidc-usermodel-attribute-mapper
  1172. consentRequired: false
  1173. config:
  1174. introspection.token.claim: "true"
  1175. userinfo.token.claim: "true"
  1176. user.attribute: zoneinfo
  1177. id.token.claim: "true"
  1178. access.token.claim: "true"
  1179. claim.name: zoneinfo
  1180. jsonType.label: String
  1181. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-family-name') | ansible.builtin.to_uuid }}
  1182. name: family name
  1183. protocol: openid-connect
  1184. protocolMapper: oidc-usermodel-attribute-mapper
  1185. consentRequired: false
  1186. config:
  1187. introspection.token.claim: "true"
  1188. userinfo.token.claim: "true"
  1189. user.attribute: lastName
  1190. id.token.claim: "true"
  1191. access.token.claim: "true"
  1192. claim.name: family_name
  1193. jsonType.label: String
  1194. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-username') | ansible.builtin.to_uuid }}
  1195. name: username
  1196. protocol: openid-connect
  1197. protocolMapper: oidc-usermodel-attribute-mapper
  1198. consentRequired: false
  1199. config:
  1200. introspection.token.claim: "true"
  1201. userinfo.token.claim: "true"
  1202. user.attribute: username
  1203. id.token.claim: "true"
  1204. access.token.claim: "true"
  1205. claim.name: preferred_username
  1206. jsonType.label: String
  1207. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-nickname') | ansible.builtin.to_uuid }}
  1208. name: nickname
  1209. protocol: openid-connect
  1210. protocolMapper: oidc-usermodel-attribute-mapper
  1211. consentRequired: false
  1212. config:
  1213. introspection.token.claim: "true"
  1214. userinfo.token.claim: "true"
  1215. user.attribute: nickname
  1216. id.token.claim: "true"
  1217. access.token.claim: "true"
  1218. claim.name: nickname
  1219. jsonType.label: String
  1220. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-middle-name') | ansible.builtin.to_uuid }}
  1221. name: middle name
  1222. protocol: openid-connect
  1223. protocolMapper: oidc-usermodel-attribute-mapper
  1224. consentRequired: false
  1225. config:
  1226. introspection.token.claim: "true"
  1227. userinfo.token.claim: "true"
  1228. user.attribute: middleName
  1229. id.token.claim: "true"
  1230. access.token.claim: "true"
  1231. claim.name: middle_name
  1232. jsonType.label: String
  1233. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-gender') | ansible.builtin.to_uuid }}
  1234. name: gender
  1235. protocol: openid-connect
  1236. protocolMapper: oidc-usermodel-attribute-mapper
  1237. consentRequired: false
  1238. config:
  1239. introspection.token.claim: "true"
  1240. userinfo.token.claim: "true"
  1241. user.attribute: gender
  1242. id.token.claim: "true"
  1243. access.token.claim: "true"
  1244. claim.name: gender
  1245. jsonType.label: String
  1246. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-updated-at') | ansible.builtin.to_uuid }}
  1247. name: updated at
  1248. protocol: openid-connect
  1249. protocolMapper: oidc-usermodel-attribute-mapper
  1250. consentRequired: false
  1251. config:
  1252. introspection.token.claim: "true"
  1253. userinfo.token.claim: "true"
  1254. user.attribute: updatedAt
  1255. id.token.claim: "true"
  1256. access.token.claim: "true"
  1257. claim.name: updated_at
  1258. jsonType.label: long
  1259. defaultDefaultClientScopes:
  1260. - role_list
  1261. - saml_organization
  1262. - profile
  1263. - email
  1264. - roles
  1265. - web-origins
  1266. - acr
  1267. - basic
  1268. defaultOptionalClientScopes:
  1269. - offline_access
  1270. - address
  1271. - phone
  1272. - microprofile-jwt
  1273. - organization
  1274. browserSecurityHeaders:
  1275. contentSecurityPolicyReportOnly: ""
  1276. xContentTypeOptions: nosniff
  1277. referrerPolicy: no-referrer
  1278. xRobotsTag: none
  1279. xFrameOptions: SAMEORIGIN
  1280. contentSecurityPolicy: frame-src 'self'; frame-ancestors 'self'; object-src 'none';
  1281. strictTransportSecurity: max-age=31536000; includeSubDomains
  1282. smtpServer: {}
  1283. eventsEnabled: false
  1284. eventsListeners:
  1285. - jboss-logging
  1286. enabledEventTypes: []
  1287. adminEventsEnabled: false
  1288. adminEventsDetailsEnabled: false
  1289. identityProviders: []
  1290. identityProviderMappers: []
  1291. components:
  1292. org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy:
  1293. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-max-clients') | ansible.builtin.to_uuid }}
  1294. name: Max Clients Limit
  1295. providerId: max-clients
  1296. subType: anonymous
  1297. subComponents: {}
  1298. config:
  1299. max-clients:
  1300. - "200"
  1301. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-fullscope') | ansible.builtin.to_uuid }}
  1302. name: Full Scope Disabled
  1303. providerId: scope
  1304. subType: anonymous
  1305. subComponents: {}
  1306. config: {}
  1307. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-protomap-anon') | ansible.builtin.to_uuid }}
  1308. name: Allowed Protocol Mapper Types
  1309. providerId: allowed-protocol-mappers
  1310. subType: anonymous
  1311. subComponents: {}
  1312. config:
  1313. allowed-protocol-mapper-types:
  1314. - oidc-sha256-pairwise-sub-mapper
  1315. - saml-user-attribute-mapper
  1316. - saml-user-property-mapper
  1317. - oidc-address-mapper
  1318. - oidc-usermodel-property-mapper
  1319. - oidc-full-name-mapper
  1320. - saml-role-list-mapper
  1321. - oidc-usermodel-attribute-mapper
  1322. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-trusted-hosts') | ansible.builtin.to_uuid }}
  1323. name: Trusted Hosts
  1324. providerId: trusted-hosts
  1325. subType: anonymous
  1326. subComponents: {}
  1327. config:
  1328. host-sending-registration-request-must-match:
  1329. - "true"
  1330. client-uris-must-match:
  1331. - "true"
  1332. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-protomap-auth') | ansible.builtin.to_uuid }}
  1333. name: Allowed Protocol Mapper Types
  1334. providerId: allowed-protocol-mappers
  1335. subType: authenticated
  1336. subComponents: {}
  1337. config:
  1338. allowed-protocol-mapper-types:
  1339. - saml-user-attribute-mapper
  1340. - saml-user-property-mapper
  1341. - oidc-sha256-pairwise-sub-mapper
  1342. - saml-role-list-mapper
  1343. - oidc-address-mapper
  1344. - oidc-usermodel-attribute-mapper
  1345. - oidc-full-name-mapper
  1346. - oidc-usermodel-property-mapper
  1347. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-consentreq') | ansible.builtin.to_uuid }}
  1348. name: Consent Required
  1349. providerId: consent-required
  1350. subType: anonymous
  1351. subComponents: {}
  1352. config: {}
  1353. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-cliscope-anon') | ansible.builtin.to_uuid }}
  1354. name: Allowed Client Scopes
  1355. providerId: allowed-client-templates
  1356. subType: anonymous
  1357. subComponents: {}
  1358. config:
  1359. allow-default-scopes:
  1360. - "true"
  1361. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-cliscope-auth') | ansible.builtin.to_uuid }}
  1362. name: Allowed Client Scopes
  1363. providerId: allowed-client-templates
  1364. subType: authenticated
  1365. subComponents: {}
  1366. config:
  1367. allow-default-scopes:
  1368. - "true"
  1369. org.keycloak.keys.KeyProvider:
  1370. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-hs512') | ansible.builtin.to_uuid }}
  1371. name: hmac-generated-hs512
  1372. providerId: hmac-generated
  1373. subComponents: {}
  1374. config:
  1375. priority:
  1376. - "100"
  1377. algorithm:
  1378. - HS512
  1379. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-aesgen') | ansible.builtin.to_uuid }}
  1380. name: aes-generated
  1381. providerId: aes-generated
  1382. subComponents: {}
  1383. config:
  1384. priority:
  1385. - "100"
  1386. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-rsaencgen') | ansible.builtin.to_uuid }}
  1387. name: rsa-enc-generated
  1388. providerId: rsa-enc-generated
  1389. subComponents: {}
  1390. config:
  1391. priority:
  1392. - "100"
  1393. algorithm:
  1394. - RSA-OAEP
  1395. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-rsagen') | ansible.builtin.to_uuid }}
  1396. name: rsa-generated
  1397. providerId: rsa-generated
  1398. subComponents: {}
  1399. config:
  1400. priority:
  1401. - "100"
  1402. internationalizationEnabled: false
  1403. supportedLocales: []
  1404. authenticationFlows:
  1405. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-acct-vrfy-opt') | ansible.builtin.to_uuid }}
  1406. alias: Account verification options
  1407. description: Method with which to verity the existing account
  1408. providerId: basic-flow
  1409. topLevel: false
  1410. builtIn: true
  1411. authenticationExecutions:
  1412. - authenticator: idp-email-verification
  1413. authenticatorFlow: false
  1414. requirement: ALTERNATIVE
  1415. priority: 10
  1416. autheticatorFlow: false
  1417. userSetupAllowed: false
  1418. - authenticatorFlow: true
  1419. requirement: ALTERNATIVE
  1420. priority: 20
  1421. autheticatorFlow: true
  1422. flowAlias: Verify Existing Account by Re-authentication
  1423. userSetupAllowed: false
  1424. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-brws-cond-otp') | ansible.builtin.to_uuid }}
  1425. alias: Browser - Conditional OTP
  1426. description: Flow to determine if the OTP is required for the authentication
  1427. providerId: basic-flow
  1428. topLevel: false
  1429. builtIn: true
  1430. authenticationExecutions:
  1431. - authenticator: conditional-user-configured
  1432. authenticatorFlow: false
  1433. requirement: REQUIRED
  1434. priority: 10
  1435. autheticatorFlow: false
  1436. userSetupAllowed: false
  1437. - authenticator: auth-otp-form
  1438. authenticatorFlow: false
  1439. requirement: REQUIRED
  1440. priority: 20
  1441. autheticatorFlow: false
  1442. userSetupAllowed: false
  1443. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-brws-cond-org') | ansible.builtin.to_uuid }}
  1444. alias: Browser - Conditional Organization
  1445. description: Flow to determine if the organization identity-first login is to be used
  1446. providerId: basic-flow
  1447. topLevel: false
  1448. builtIn: true
  1449. authenticationExecutions:
  1450. - authenticator: conditional-user-configured
  1451. authenticatorFlow: false
  1452. requirement: REQUIRED
  1453. priority: 10
  1454. autheticatorFlow: false
  1455. userSetupAllowed: false
  1456. - authenticator: organization
  1457. authenticatorFlow: false
  1458. requirement: ALTERNATIVE
  1459. priority: 20
  1460. autheticatorFlow: false
  1461. userSetupAllowed: false
  1462. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-dg-cond-otp') | ansible.builtin.to_uuid }}
  1463. alias: Direct Grant - Conditional OTP
  1464. description: Flow to determine if the OTP is required for the authentication
  1465. providerId: basic-flow
  1466. topLevel: false
  1467. builtIn: true
  1468. authenticationExecutions:
  1469. - authenticator: conditional-user-configured
  1470. authenticatorFlow: false
  1471. requirement: REQUIRED
  1472. priority: 10
  1473. autheticatorFlow: false
  1474. userSetupAllowed: false
  1475. - authenticator: direct-grant-validate-otp
  1476. authenticatorFlow: false
  1477. requirement: REQUIRED
  1478. priority: 20
  1479. autheticatorFlow: false
  1480. userSetupAllowed: false
  1481. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-fbrok-login-cond-org') | ansible.builtin.to_uuid }}
  1482. alias: First Broker Login - Conditional Organization
  1483. description: Flow to determine if the authenticator that adds organization members is to be used
  1484. providerId: basic-flow
  1485. topLevel: false
  1486. builtIn: true
  1487. authenticationExecutions:
  1488. - authenticator: conditional-user-configured
  1489. authenticatorFlow: false
  1490. requirement: REQUIRED
  1491. priority: 10
  1492. autheticatorFlow: false
  1493. userSetupAllowed: false
  1494. - authenticator: idp-add-organization-member
  1495. authenticatorFlow: false
  1496. requirement: REQUIRED
  1497. priority: 20
  1498. autheticatorFlow: false
  1499. userSetupAllowed: false
  1500. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-fbrok-login-cond-otp') | ansible.builtin.to_uuid }}
  1501. alias: First broker login - Conditional OTP
  1502. description: Flow to determine if the OTP is required for the authentication
  1503. providerId: basic-flow
  1504. topLevel: false
  1505. builtIn: true
  1506. authenticationExecutions:
  1507. - authenticator: conditional-user-configured
  1508. authenticatorFlow: false
  1509. requirement: REQUIRED
  1510. priority: 10
  1511. autheticatorFlow: false
  1512. userSetupAllowed: false
  1513. - authenticator: auth-otp-form
  1514. authenticatorFlow: false
  1515. requirement: REQUIRED
  1516. priority: 20
  1517. autheticatorFlow: false
  1518. userSetupAllowed: false
  1519. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-handle-existing') | ansible.builtin.to_uuid }}
  1520. alias: Handle Existing Account
  1521. description: Handle what to do if there is existing account with same email/username like authenticated identity provider
  1522. providerId: basic-flow
  1523. topLevel: false
  1524. builtIn: true
  1525. authenticationExecutions:
  1526. - authenticator: idp-confirm-link
  1527. authenticatorFlow: false
  1528. requirement: REQUIRED
  1529. priority: 10
  1530. autheticatorFlow: false
  1531. userSetupAllowed: false
  1532. - authenticatorFlow: true
  1533. requirement: REQUIRED
  1534. priority: 20
  1535. autheticatorFlow: true
  1536. flowAlias: Account verification options
  1537. userSetupAllowed: false
  1538. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-org') | ansible.builtin.to_uuid }}
  1539. alias: Organization
  1540. providerId: basic-flow
  1541. topLevel: false
  1542. builtIn: true
  1543. authenticationExecutions:
  1544. - authenticatorFlow: true
  1545. requirement: CONDITIONAL
  1546. priority: 10
  1547. autheticatorFlow: true
  1548. flowAlias: Browser - Conditional Organization
  1549. userSetupAllowed: false
  1550. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-cond-otp') | ansible.builtin.to_uuid }}
  1551. alias: Reset - Conditional OTP
  1552. description: Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.
  1553. providerId: basic-flow
  1554. topLevel: false
  1555. builtIn: true
  1556. authenticationExecutions:
  1557. - authenticator: conditional-user-configured
  1558. authenticatorFlow: false
  1559. requirement: REQUIRED
  1560. priority: 10
  1561. autheticatorFlow: false
  1562. userSetupAllowed: false
  1563. - authenticator: reset-otp
  1564. authenticatorFlow: false
  1565. requirement: REQUIRED
  1566. priority: 20
  1567. autheticatorFlow: false
  1568. userSetupAllowed: false
  1569. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-ucreat-or-link') | ansible.builtin.to_uuid }}
  1570. alias: User creation or linking
  1571. description: Flow for the existing/non-existing user alternatives
  1572. providerId: basic-flow
  1573. topLevel: false
  1574. builtIn: true
  1575. authenticationExecutions:
  1576. - authenticatorConfig: create unique user config
  1577. authenticator: idp-create-user-if-unique
  1578. authenticatorFlow: false
  1579. requirement: ALTERNATIVE
  1580. priority: 10
  1581. autheticatorFlow: false
  1582. userSetupAllowed: false
  1583. - authenticatorFlow: true
  1584. requirement: ALTERNATIVE
  1585. priority: 20
  1586. autheticatorFlow: true
  1587. flowAlias: Handle Existing Account
  1588. userSetupAllowed: false
  1589. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-vrfy-existing-reauth') | ansible.builtin.to_uuid }}
  1590. alias: Verify Existing Account by Re-authentication
  1591. description: Reauthentication of existing account
  1592. providerId: basic-flow
  1593. topLevel: false
  1594. builtIn: true
  1595. authenticationExecutions:
  1596. - authenticator: idp-username-password-form
  1597. authenticatorFlow: false
  1598. requirement: REQUIRED
  1599. priority: 10
  1600. autheticatorFlow: false
  1601. userSetupAllowed: false
  1602. - authenticatorFlow: true
  1603. requirement: CONDITIONAL
  1604. priority: 20
  1605. autheticatorFlow: true
  1606. flowAlias: First broker login - Conditional OTP
  1607. userSetupAllowed: false
  1608. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-brws-based-auth') | ansible.builtin.to_uuid }}
  1609. alias: browser
  1610. description: Browser based authentication
  1611. providerId: basic-flow
  1612. topLevel: true
  1613. builtIn: true
  1614. authenticationExecutions:
  1615. - authenticator: auth-cookie
  1616. authenticatorFlow: false
  1617. requirement: ALTERNATIVE
  1618. priority: 10
  1619. autheticatorFlow: false
  1620. userSetupAllowed: false
  1621. - authenticator: auth-spnego
  1622. authenticatorFlow: false
  1623. requirement: DISABLED
  1624. priority: 20
  1625. autheticatorFlow: false
  1626. userSetupAllowed: false
  1627. - authenticator: identity-provider-redirector
  1628. authenticatorFlow: false
  1629. requirement: ALTERNATIVE
  1630. priority: 25
  1631. autheticatorFlow: false
  1632. userSetupAllowed: false
  1633. - authenticatorFlow: true
  1634. requirement: ALTERNATIVE
  1635. priority: 26
  1636. autheticatorFlow: true
  1637. flowAlias: Organization
  1638. userSetupAllowed: false
  1639. - authenticatorFlow: true
  1640. requirement: ALTERNATIVE
  1641. priority: 30
  1642. autheticatorFlow: true
  1643. flowAlias: forms
  1644. userSetupAllowed: false
  1645. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-base-client-auth') | ansible.builtin.to_uuid }}
  1646. alias: clients
  1647. description: Base authentication for clients
  1648. providerId: client-flow
  1649. topLevel: true
  1650. builtIn: true
  1651. authenticationExecutions:
  1652. - authenticator: client-secret
  1653. authenticatorFlow: false
  1654. requirement: ALTERNATIVE
  1655. priority: 10
  1656. autheticatorFlow: false
  1657. userSetupAllowed: false
  1658. - authenticator: client-jwt
  1659. authenticatorFlow: false
  1660. requirement: ALTERNATIVE
  1661. priority: 20
  1662. autheticatorFlow: false
  1663. userSetupAllowed: false
  1664. - authenticator: client-secret-jwt
  1665. authenticatorFlow: false
  1666. requirement: ALTERNATIVE
  1667. priority: 30
  1668. autheticatorFlow: false
  1669. userSetupAllowed: false
  1670. - authenticator: client-x509
  1671. authenticatorFlow: false
  1672. requirement: ALTERNATIVE
  1673. priority: 40
  1674. autheticatorFlow: false
  1675. userSetupAllowed: false
  1676. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-dgrant-oidc-owner') | ansible.builtin.to_uuid }}
  1677. alias: direct grant
  1678. description: OpenID Connect Resource Owner Grant
  1679. providerId: basic-flow
  1680. topLevel: true
  1681. builtIn: true
  1682. authenticationExecutions:
  1683. - authenticator: direct-grant-validate-username
  1684. authenticatorFlow: false
  1685. requirement: REQUIRED
  1686. priority: 10
  1687. autheticatorFlow: false
  1688. userSetupAllowed: false
  1689. - authenticator: direct-grant-validate-password
  1690. authenticatorFlow: false
  1691. requirement: REQUIRED
  1692. priority: 20
  1693. autheticatorFlow: false
  1694. userSetupAllowed: false
  1695. - authenticatorFlow: true
  1696. requirement: CONDITIONAL
  1697. priority: 30
  1698. autheticatorFlow: true
  1699. flowAlias: Direct Grant - Conditional OTP
  1700. userSetupAllowed: false
  1701. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-docker-auth') | ansible.builtin.to_uuid }}
  1702. alias: docker auth
  1703. description: Used by Docker clients to authenticate against the IDP
  1704. providerId: basic-flow
  1705. topLevel: true
  1706. builtIn: true
  1707. authenticationExecutions:
  1708. - authenticator: docker-http-basic-authenticator
  1709. authenticatorFlow: false
  1710. requirement: REQUIRED
  1711. priority: 10
  1712. autheticatorFlow: false
  1713. userSetupAllowed: false
  1714. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-fbrok-login') | ansible.builtin.to_uuid }}
  1715. alias: first broker login
  1716. description: Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account
  1717. providerId: basic-flow
  1718. topLevel: true
  1719. builtIn: true
  1720. authenticationExecutions:
  1721. - authenticatorConfig: review profile config
  1722. authenticator: idp-review-profile
  1723. authenticatorFlow: false
  1724. requirement: REQUIRED
  1725. priority: 10
  1726. autheticatorFlow: false
  1727. userSetupAllowed: false
  1728. - authenticatorFlow: true
  1729. requirement: REQUIRED
  1730. priority: 20
  1731. autheticatorFlow: true
  1732. flowAlias: User creation or linking
  1733. userSetupAllowed: false
  1734. - authenticatorFlow: true
  1735. requirement: CONDITIONAL
  1736. priority: 50
  1737. autheticatorFlow: true
  1738. flowAlias: First Broker Login - Conditional Organization
  1739. userSetupAllowed: false
  1740. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-forms') | ansible.builtin.to_uuid }}
  1741. alias: forms
  1742. description: Username, password, otp and other auth forms.
  1743. providerId: basic-flow
  1744. topLevel: false
  1745. builtIn: true
  1746. authenticationExecutions:
  1747. - authenticator: auth-username-password-form
  1748. authenticatorFlow: false
  1749. requirement: REQUIRED
  1750. priority: 10
  1751. autheticatorFlow: false
  1752. userSetupAllowed: false
  1753. - authenticatorFlow: true
  1754. requirement: CONDITIONAL
  1755. priority: 20
  1756. autheticatorFlow: true
  1757. flowAlias: Browser - Conditional OTP
  1758. userSetupAllowed: false
  1759. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-reg-flow') | ansible.builtin.to_uuid }}
  1760. alias: registration
  1761. description: Registration flow
  1762. providerId: basic-flow
  1763. topLevel: true
  1764. builtIn: true
  1765. authenticationExecutions:
  1766. - authenticator: registration-page-form
  1767. authenticatorFlow: true
  1768. requirement: REQUIRED
  1769. priority: 10
  1770. autheticatorFlow: true
  1771. flowAlias: registration form
  1772. userSetupAllowed: false
  1773. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-reg-form') | ansible.builtin.to_uuid }}
  1774. alias: registration form
  1775. description: Registration form
  1776. providerId: form-flow
  1777. topLevel: false
  1778. builtIn: true
  1779. authenticationExecutions:
  1780. - authenticator: registration-user-creation
  1781. authenticatorFlow: false
  1782. requirement: REQUIRED
  1783. priority: 20
  1784. autheticatorFlow: false
  1785. userSetupAllowed: false
  1786. - authenticator: registration-password-action
  1787. authenticatorFlow: false
  1788. requirement: REQUIRED
  1789. priority: 50
  1790. autheticatorFlow: false
  1791. userSetupAllowed: false
  1792. - authenticator: registration-recaptcha-action
  1793. authenticatorFlow: false
  1794. requirement: DISABLED
  1795. priority: 60
  1796. autheticatorFlow: false
  1797. userSetupAllowed: false
  1798. - authenticator: registration-terms-and-conditions
  1799. authenticatorFlow: false
  1800. requirement: DISABLED
  1801. priority: 70
  1802. autheticatorFlow: false
  1803. userSetupAllowed: false
  1804. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-reset-creds') | ansible.builtin.to_uuid }}
  1805. alias: reset credentials
  1806. description: Reset credentials for a user if they forgot their password or something
  1807. providerId: basic-flow
  1808. topLevel: true
  1809. builtIn: true
  1810. authenticationExecutions:
  1811. - authenticator: reset-credentials-choose-user
  1812. authenticatorFlow: false
  1813. requirement: REQUIRED
  1814. priority: 10
  1815. autheticatorFlow: false
  1816. userSetupAllowed: false
  1817. - authenticator: reset-credential-email
  1818. authenticatorFlow: false
  1819. requirement: REQUIRED
  1820. priority: 20
  1821. autheticatorFlow: false
  1822. userSetupAllowed: false
  1823. - authenticator: reset-password
  1824. authenticatorFlow: false
  1825. requirement: REQUIRED
  1826. priority: 30
  1827. autheticatorFlow: false
  1828. userSetupAllowed: false
  1829. - authenticatorFlow: true
  1830. requirement: CONDITIONAL
  1831. priority: 40
  1832. autheticatorFlow: true
  1833. flowAlias: Reset - Conditional OTP
  1834. userSetupAllowed: false
  1835. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-saml-ecp') | ansible.builtin.to_uuid }}
  1836. alias: saml ecp
  1837. description: SAML ECP Profile Authentication Flow
  1838. providerId: basic-flow
  1839. topLevel: true
  1840. builtIn: true
  1841. authenticationExecutions:
  1842. - authenticator: http-basic-authenticator
  1843. authenticatorFlow: false
  1844. requirement: REQUIRED
  1845. priority: 10
  1846. autheticatorFlow: false
  1847. userSetupAllowed: false
  1848. authenticatorConfig:
  1849. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authconfig-unique-user') | ansible.builtin.to_uuid }}
  1850. alias: create unique user config
  1851. config:
  1852. require.password.update.after.registration: "false"
  1853. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authconfig-review-profile-') | ansible.builtin.to_uuid }}
  1854. alias: review profile config
  1855. config:
  1856. update.profile.on.first.login: missing
  1857. requiredActions:
  1858. - alias: CONFIGURE_TOTP
  1859. name: Configure OTP
  1860. providerId: CONFIGURE_TOTP
  1861. enabled: true
  1862. defaultAction: false
  1863. priority: 10
  1864. config: {}
  1865. - alias: TERMS_AND_CONDITIONS
  1866. name: Terms and Conditions
  1867. providerId: TERMS_AND_CONDITIONS
  1868. enabled: false
  1869. defaultAction: false
  1870. priority: 20
  1871. config: {}
  1872. - alias: UPDATE_PASSWORD
  1873. name: Update Password
  1874. providerId: UPDATE_PASSWORD
  1875. enabled: true
  1876. defaultAction: false
  1877. priority: 30
  1878. config: {}
  1879. - alias: UPDATE_PROFILE
  1880. name: Update Profile
  1881. providerId: UPDATE_PROFILE
  1882. enabled: true
  1883. defaultAction: false
  1884. priority: 40
  1885. config: {}
  1886. - alias: VERIFY_EMAIL
  1887. name: Verify Email
  1888. providerId: VERIFY_EMAIL
  1889. enabled: true
  1890. defaultAction: false
  1891. priority: 50
  1892. config: {}
  1893. - alias: delete_account
  1894. name: Delete Account
  1895. providerId: delete_account
  1896. enabled: false
  1897. defaultAction: false
  1898. priority: 60
  1899. config: {}
  1900. - alias: webauthn-register
  1901. name: Webauthn Register
  1902. providerId: webauthn-register
  1903. enabled: true
  1904. defaultAction: false
  1905. priority: 70
  1906. config: {}
  1907. - alias: webauthn-register-passwordless
  1908. name: Webauthn Register Passwordless
  1909. providerId: webauthn-register-passwordless
  1910. enabled: true
  1911. defaultAction: false
  1912. priority: 80
  1913. config: {}
  1914. - alias: VERIFY_PROFILE
  1915. name: Verify Profile
  1916. providerId: VERIFY_PROFILE
  1917. enabled: true
  1918. defaultAction: false
  1919. priority: 90
  1920. config: {}
  1921. - alias: delete_credential
  1922. name: Delete Credential
  1923. providerId: delete_credential
  1924. enabled: true
  1925. defaultAction: false
  1926. priority: 100
  1927. config: {}
  1928. - alias: update_user_locale
  1929. name: Update User Locale
  1930. providerId: update_user_locale
  1931. enabled: true
  1932. defaultAction: false
  1933. priority: 1000
  1934. config: {}
  1935. browserFlow: browser
  1936. registrationFlow: registration
  1937. directGrantFlow: direct grant
  1938. resetCredentialsFlow: reset credentials
  1939. clientAuthenticationFlow: clients
  1940. dockerAuthenticationFlow: docker auth
  1941. firstBrokerLoginFlow: first broker login
  1942. attributes:
  1943. cibaBackchannelTokenDeliveryMode: poll
  1944. cibaExpiresIn: "120"
  1945. cibaAuthRequestedUserHint: login_hint
  1946. oauth2DeviceCodeLifespan: "600"
  1947. oauth2DevicePollingInterval: "5"
  1948. parRequestUriLifespan: "60"
  1949. cibaInterval: "5"
  1950. realmReusableOtpCode: "false"
  1951. keycloakVersion: 26.2.7.redhat-00001
  1952. userManagedAccessAllowed: false
  1953. organizationsEnabled: false
  1954. verifiableCredentialsEnabled: false
  1955. adminPermissionsEnabled: false
  1956. clientProfiles:
  1957. profiles: []
  1958. clientPolicies:
  1959. policies: []