realm-import-template.yaml.j2 84 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940
  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. secret: '{{ client.secret | default(omit) }}'
  567. redirectUris:
  568. - {{ client.base_url }}/*
  569. webOrigins:
  570. - {{ client.base_url }}
  571. notBefore: 0
  572. bearerOnly: false
  573. consentRequired: false
  574. standardFlowEnabled: true
  575. implicitFlowEnabled: false
  576. directAccessGrantsEnabled: true
  577. serviceAccountsEnabled: false
  578. publicClient: false
  579. frontchannelLogout: true
  580. protocol: openid-connect
  581. attributes:
  582. client.secret.creation.time: "1755544217"
  583. request.object.signature.alg: any
  584. request.object.encryption.alg: any
  585. client.introspection.response.allow.jwt.claim.enabled: "false"
  586. standard.token.exchange.enabled: "false"
  587. frontchannel.logout.session.required: "true"
  588. oauth2.device.authorization.grant.enabled: "false"
  589. use.jwks.url: "false"
  590. backchannel.logout.revoke.offline.tokens: "false"
  591. use.refresh.tokens: "true"
  592. realm_client: "false"
  593. oidc.ciba.grant.enabled: "false"
  594. client.use.lightweight.access.token.enabled: "false"
  595. backchannel.logout.session.required: "true"
  596. client_credentials.use_refresh_token: "false"
  597. request.object.required: not required
  598. access.token.header.type.rfc9068: "false"
  599. acr.loa.map: '{}'
  600. require.pushed.authorization.requests: "false"
  601. tls.client.certificate.bound.access.tokens: "false"
  602. display.on.consent.screen: "false"
  603. request.object.encryption.enc: any
  604. token.response.type.bearer.lower-case: "false"
  605. authenticationFlowBindingOverrides: {}
  606. fullScopeAllowed: true
  607. nodeReRegistrationTimeout: -1
  608. defaultClientScopes:
  609. - web-origins
  610. - acr
  611. - roles
  612. - profile
  613. - basic
  614. - email
  615. optionalClientScopes:
  616. - address
  617. - phone
  618. - organization
  619. - offline_access
  620. - microprofile-jwt
  621. {% endfor %}
  622. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-realm-management') | ansible.builtin.to_uuid }}
  623. clientId: realm-management
  624. name: ${client_realm-management}
  625. surrogateAuthRequired: false
  626. enabled: true
  627. alwaysDisplayInConsole: false
  628. clientAuthenticatorType: client-secret
  629. redirectUris: []
  630. webOrigins: []
  631. notBefore: 0
  632. bearerOnly: true
  633. consentRequired: false
  634. standardFlowEnabled: true
  635. implicitFlowEnabled: false
  636. directAccessGrantsEnabled: false
  637. serviceAccountsEnabled: false
  638. publicClient: false
  639. frontchannelLogout: false
  640. protocol: openid-connect
  641. attributes:
  642. realm_client: "true"
  643. authenticationFlowBindingOverrides: {}
  644. fullScopeAllowed: false
  645. nodeReRegistrationTimeout: 0
  646. defaultClientScopes:
  647. - web-origins
  648. - acr
  649. - roles
  650. - profile
  651. - basic
  652. - email
  653. optionalClientScopes:
  654. - address
  655. - phone
  656. - organization
  657. - offline_access
  658. - microprofile-jwt
  659. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-security-admin-console') | ansible.builtin.to_uuid }}
  660. clientId: security-admin-console
  661. name: ${client_security-admin-console}
  662. rootUrl: ${authAdminUrl}
  663. baseUrl: /admin/{{ rhbk.realm | default('sample-realm') }}/console/
  664. surrogateAuthRequired: false
  665. enabled: true
  666. alwaysDisplayInConsole: false
  667. clientAuthenticatorType: client-secret
  668. redirectUris:
  669. - /admin/{{ rhbk.realm | default('sample-realm') }}/console/*
  670. webOrigins:
  671. - +
  672. notBefore: 0
  673. bearerOnly: false
  674. consentRequired: false
  675. standardFlowEnabled: true
  676. implicitFlowEnabled: false
  677. directAccessGrantsEnabled: false
  678. serviceAccountsEnabled: false
  679. publicClient: true
  680. frontchannelLogout: false
  681. protocol: openid-connect
  682. attributes:
  683. realm_client: "false"
  684. client.use.lightweight.access.token.enabled: "true"
  685. post.logout.redirect.uris: +
  686. pkce.code.challenge.method: S256
  687. authenticationFlowBindingOverrides: {}
  688. fullScopeAllowed: true
  689. nodeReRegistrationTimeout: 0
  690. protocolMappers:
  691. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-client-security-admin-console-pm-locale') | ansible.builtin.to_uuid }}
  692. name: locale
  693. protocol: openid-connect
  694. protocolMapper: oidc-usermodel-attribute-mapper
  695. consentRequired: false
  696. config:
  697. introspection.token.claim: "true"
  698. userinfo.token.claim: "true"
  699. user.attribute: locale
  700. id.token.claim: "true"
  701. access.token.claim: "true"
  702. claim.name: locale
  703. jsonType.label: String
  704. defaultClientScopes:
  705. - web-origins
  706. - acr
  707. - roles
  708. - profile
  709. - basic
  710. - email
  711. optionalClientScopes:
  712. - address
  713. - phone
  714. - organization
  715. - offline_access
  716. - microprofile-jwt
  717. clientScopes:
  718. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles') | ansible.builtin.to_uuid }}
  719. name: roles
  720. description: OpenID Connect scope for add user roles to the access token
  721. protocol: openid-connect
  722. attributes:
  723. include.in.token.scope: "false"
  724. consent.screen.text: ${rolesScopeConsentText}
  725. display.on.consent.screen: "true"
  726. protocolMappers:
  727. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles-pm-client-roles') | ansible.builtin.to_uuid }}
  728. name: client roles
  729. protocol: openid-connect
  730. protocolMapper: oidc-usermodel-client-role-mapper
  731. consentRequired: false
  732. config:
  733. user.attribute: foo
  734. introspection.token.claim: "true"
  735. access.token.claim: "true"
  736. claim.name: resource_access.${client_id}.roles
  737. jsonType.label: String
  738. multivalued: "true"
  739. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles-pm-realm-roles') | ansible.builtin.to_uuid }}
  740. name: realm roles
  741. protocol: openid-connect
  742. protocolMapper: oidc-usermodel-realm-role-mapper
  743. consentRequired: false
  744. config:
  745. user.attribute: foo
  746. introspection.token.claim: "true"
  747. access.token.claim: "true"
  748. claim.name: realm_access.roles
  749. jsonType.label: String
  750. multivalued: "true"
  751. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-roles-pm-audience-resolve') | ansible.builtin.to_uuid }}
  752. name: audience resolve
  753. protocol: openid-connect
  754. protocolMapper: oidc-audience-resolve-mapper
  755. consentRequired: false
  756. config:
  757. introspection.token.claim: "true"
  758. access.token.claim: "true"
  759. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account') | ansible.builtin.to_uuid }}
  760. name: service_account
  761. description: Specific scope for a client enabled for service accounts
  762. protocol: openid-connect
  763. attributes:
  764. include.in.token.scope: "false"
  765. display.on.consent.screen: "false"
  766. protocolMappers:
  767. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account-pm-client-host') | ansible.builtin.to_uuid }}
  768. name: Client Host
  769. protocol: openid-connect
  770. protocolMapper: oidc-usersessionmodel-note-mapper
  771. consentRequired: false
  772. config:
  773. user.session.note: clientHost
  774. id.token.claim: "true"
  775. introspection.token.claim: "true"
  776. access.token.claim: "true"
  777. claim.name: clientHost
  778. jsonType.label: String
  779. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account-pm-client-ip') | ansible.builtin.to_uuid }}
  780. name: Client IP Address
  781. protocol: openid-connect
  782. protocolMapper: oidc-usersessionmodel-note-mapper
  783. consentRequired: false
  784. config:
  785. user.session.note: clientAddress
  786. id.token.claim: "true"
  787. introspection.token.claim: "true"
  788. access.token.claim: "true"
  789. claim.name: clientAddress
  790. jsonType.label: String
  791. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-service-account-pm-client-id') | ansible.builtin.to_uuid }}
  792. name: Client ID
  793. protocol: openid-connect
  794. protocolMapper: oidc-usersessionmodel-note-mapper
  795. consentRequired: false
  796. config:
  797. user.session.note: client_id
  798. id.token.claim: "true"
  799. introspection.token.claim: "true"
  800. access.token.claim: "true"
  801. claim.name: client_id
  802. jsonType.label: String
  803. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-organization') | ansible.builtin.to_uuid }}
  804. name: organization
  805. description: Additional claims about the organization a subject belongs to
  806. protocol: openid-connect
  807. attributes:
  808. include.in.token.scope: "true"
  809. consent.screen.text: ${organizationScopeConsentText}
  810. display.on.consent.screen: "true"
  811. protocolMappers:
  812. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-organization-pm-organization') | ansible.builtin.to_uuid }}
  813. name: organization
  814. protocol: openid-connect
  815. protocolMapper: oidc-organization-membership-mapper
  816. consentRequired: false
  817. config:
  818. id.token.claim: "true"
  819. introspection.token.claim: "true"
  820. access.token.claim: "true"
  821. claim.name: organization
  822. jsonType.label: String
  823. multivalued: "true"
  824. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-mprof-jwt') | ansible.builtin.to_uuid }}
  825. name: microprofile-jwt
  826. description: Microprofile - JWT built-in scope
  827. protocol: openid-connect
  828. attributes:
  829. include.in.token.scope: "true"
  830. display.on.consent.screen: "false"
  831. protocolMappers:
  832. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-mprof-jwt-pm-upn') | ansible.builtin.to_uuid }}
  833. name: upn
  834. protocol: openid-connect
  835. protocolMapper: oidc-usermodel-attribute-mapper
  836. consentRequired: false
  837. config:
  838. introspection.token.claim: "true"
  839. userinfo.token.claim: "true"
  840. user.attribute: username
  841. id.token.claim: "true"
  842. access.token.claim: "true"
  843. claim.name: upn
  844. jsonType.label: String
  845. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-mprof-jwt-pm-groups') | ansible.builtin.to_uuid }}
  846. name: groups
  847. protocol: openid-connect
  848. protocolMapper: oidc-usermodel-realm-role-mapper
  849. consentRequired: false
  850. config:
  851. introspection.token.claim: "true"
  852. multivalued: "true"
  853. user.attribute: foo
  854. id.token.claim: "true"
  855. access.token.claim: "true"
  856. claim.name: groups
  857. jsonType.label: String
  858. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-saml-org') | ansible.builtin.to_uuid }}
  859. name: saml_organization
  860. description: Organization Membership
  861. protocol: saml
  862. attributes:
  863. display.on.consent.screen: "false"
  864. protocolMappers:
  865. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-saml-org-pm-organization') | ansible.builtin.to_uuid }}
  866. name: organization
  867. protocol: saml
  868. protocolMapper: saml-organization-membership-mapper
  869. consentRequired: false
  870. config: {}
  871. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-oidc') | ansible.builtin.to_uuid }}
  872. name: acr
  873. description: OpenID Connect scope for add acr (authentication context class reference) to the token
  874. protocol: openid-connect
  875. attributes:
  876. include.in.token.scope: "false"
  877. display.on.consent.screen: "false"
  878. protocolMappers:
  879. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-oidc-pm-acr-loa-level') | ansible.builtin.to_uuid }}
  880. name: acr loa level
  881. protocol: openid-connect
  882. protocolMapper: oidc-acr-mapper
  883. consentRequired: false
  884. config:
  885. id.token.claim: "true"
  886. access.token.claim: "true"
  887. introspection.token.claim: "true"
  888. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-email') | ansible.builtin.to_uuid }}
  889. name: email
  890. description: 'OpenID Connect built-in scope: email'
  891. protocol: openid-connect
  892. attributes:
  893. include.in.token.scope: "true"
  894. consent.screen.text: ${emailScopeConsentText}
  895. display.on.consent.screen: "true"
  896. protocolMappers:
  897. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-email-pm-email-vrfd') | ansible.builtin.to_uuid }}
  898. name: email verified
  899. protocol: openid-connect
  900. protocolMapper: oidc-usermodel-property-mapper
  901. consentRequired: false
  902. config:
  903. introspection.token.claim: "true"
  904. userinfo.token.claim: "true"
  905. user.attribute: emailVerified
  906. id.token.claim: "true"
  907. access.token.claim: "true"
  908. claim.name: email_verified
  909. jsonType.label: boolean
  910. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-email-pm-email') | ansible.builtin.to_uuid }}
  911. name: email
  912. protocol: openid-connect
  913. protocolMapper: oidc-usermodel-attribute-mapper
  914. consentRequired: false
  915. config:
  916. introspection.token.claim: "true"
  917. userinfo.token.claim: "true"
  918. user.attribute: email
  919. id.token.claim: "true"
  920. access.token.claim: "true"
  921. claim.name: email
  922. jsonType.label: String
  923. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-role-list') | ansible.builtin.to_uuid }}
  924. name: role_list
  925. description: SAML role list
  926. protocol: saml
  927. attributes:
  928. consent.screen.text: ${samlRoleListScopeConsentText}
  929. display.on.consent.screen: "true"
  930. protocolMappers:
  931. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-role-list-pm-role-list') | ansible.builtin.to_uuid }}
  932. name: role list
  933. protocol: saml
  934. protocolMapper: saml-role-list-mapper
  935. consentRequired: false
  936. config:
  937. single: "false"
  938. attribute.nameformat: Basic
  939. attribute.name: Role
  940. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-phone') | ansible.builtin.to_uuid }}
  941. name: phone
  942. description: 'OpenID Connect built-in scope: phone'
  943. protocol: openid-connect
  944. attributes:
  945. include.in.token.scope: "true"
  946. consent.screen.text: ${phoneScopeConsentText}
  947. display.on.consent.screen: "true"
  948. protocolMappers:
  949. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-phone-pm-phnum') | ansible.builtin.to_uuid }}
  950. name: phone number
  951. protocol: openid-connect
  952. protocolMapper: oidc-usermodel-attribute-mapper
  953. consentRequired: false
  954. config:
  955. introspection.token.claim: "true"
  956. userinfo.token.claim: "true"
  957. user.attribute: phoneNumber
  958. id.token.claim: "true"
  959. access.token.claim: "true"
  960. claim.name: phone_number
  961. jsonType.label: String
  962. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-phone-pm-phnum-vrfd') | ansible.builtin.to_uuid }}
  963. name: phone number verified
  964. protocol: openid-connect
  965. protocolMapper: oidc-usermodel-attribute-mapper
  966. consentRequired: false
  967. config:
  968. introspection.token.claim: "true"
  969. userinfo.token.claim: "true"
  970. user.attribute: phoneNumberVerified
  971. id.token.claim: "true"
  972. access.token.claim: "true"
  973. claim.name: phone_number_verified
  974. jsonType.label: boolean
  975. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-address') | ansible.builtin.to_uuid }}
  976. name: address
  977. description: 'OpenID Connect built-in scope: address'
  978. protocol: openid-connect
  979. attributes:
  980. include.in.token.scope: "true"
  981. consent.screen.text: ${addressScopeConsentText}
  982. display.on.consent.screen: "true"
  983. protocolMappers:
  984. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-address-pm-address') | ansible.builtin.to_uuid }}
  985. name: address
  986. protocol: openid-connect
  987. protocolMapper: oidc-address-mapper
  988. consentRequired: false
  989. config:
  990. user.attribute.formatted: formatted
  991. user.attribute.country: country
  992. introspection.token.claim: "true"
  993. user.attribute.postal_code: postal_code
  994. userinfo.token.claim: "true"
  995. user.attribute.street: street
  996. id.token.claim: "true"
  997. user.attribute.region: region
  998. access.token.claim: "true"
  999. user.attribute.locality: locality
  1000. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-basic') | ansible.builtin.to_uuid }}
  1001. name: basic
  1002. description: OpenID Connect scope for add all basic claims to the token
  1003. protocol: openid-connect
  1004. attributes:
  1005. include.in.token.scope: "false"
  1006. display.on.consent.screen: "false"
  1007. protocolMappers:
  1008. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-basic-pm-sub') | ansible.builtin.to_uuid }}
  1009. name: sub
  1010. protocol: openid-connect
  1011. protocolMapper: oidc-sub-mapper
  1012. consentRequired: false
  1013. config:
  1014. introspection.token.claim: "true"
  1015. access.token.claim: "true"
  1016. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-basic-pm-auth-time') | ansible.builtin.to_uuid }}
  1017. name: auth_time
  1018. protocol: openid-connect
  1019. protocolMapper: oidc-usersessionmodel-note-mapper
  1020. consentRequired: false
  1021. config:
  1022. user.session.note: AUTH_TIME
  1023. id.token.claim: "true"
  1024. introspection.token.claim: "true"
  1025. access.token.claim: "true"
  1026. claim.name: auth_time
  1027. jsonType.label: long
  1028. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-offline') | ansible.builtin.to_uuid }}
  1029. name: offline_access
  1030. description: 'OpenID Connect built-in scope: offline_access'
  1031. protocol: openid-connect
  1032. attributes:
  1033. consent.screen.text: ${offlineAccessScopeConsentText}
  1034. display.on.consent.screen: "true"
  1035. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-web-origins') | ansible.builtin.to_uuid }}
  1036. name: web-origins
  1037. description: OpenID Connect scope for add allowed web origins to the access token
  1038. protocol: openid-connect
  1039. attributes:
  1040. include.in.token.scope: "false"
  1041. consent.screen.text: ""
  1042. display.on.consent.screen: "false"
  1043. protocolMappers:
  1044. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-web-origins-pm-allowed-origins') | ansible.builtin.to_uuid }}
  1045. name: allowed web origins
  1046. protocol: openid-connect
  1047. protocolMapper: oidc-allowed-origins-mapper
  1048. consentRequired: false
  1049. config:
  1050. access.token.claim: "true"
  1051. introspection.token.claim: "true"
  1052. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile') | ansible.builtin.to_uuid }}
  1053. name: profile
  1054. description: 'OpenID Connect built-in scope: profile'
  1055. protocol: openid-connect
  1056. attributes:
  1057. include.in.token.scope: "true"
  1058. consent.screen.text: ${profileScopeConsentText}
  1059. display.on.consent.screen: "true"
  1060. protocolMappers:
  1061. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-website') | ansible.builtin.to_uuid }}
  1062. name: website
  1063. protocol: openid-connect
  1064. protocolMapper: oidc-usermodel-attribute-mapper
  1065. consentRequired: false
  1066. config:
  1067. introspection.token.claim: "true"
  1068. userinfo.token.claim: "true"
  1069. user.attribute: website
  1070. id.token.claim: "true"
  1071. access.token.claim: "true"
  1072. claim.name: website
  1073. jsonType.label: String
  1074. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-full-name') | ansible.builtin.to_uuid }}
  1075. name: full name
  1076. protocol: openid-connect
  1077. protocolMapper: oidc-full-name-mapper
  1078. consentRequired: false
  1079. config:
  1080. id.token.claim: "true"
  1081. introspection.token.claim: "true"
  1082. access.token.claim: "true"
  1083. userinfo.token.claim: "true"
  1084. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-locale') | ansible.builtin.to_uuid }}
  1085. name: locale
  1086. protocol: openid-connect
  1087. protocolMapper: oidc-usermodel-attribute-mapper
  1088. consentRequired: false
  1089. config:
  1090. introspection.token.claim: "true"
  1091. userinfo.token.claim: "true"
  1092. user.attribute: locale
  1093. id.token.claim: "true"
  1094. access.token.claim: "true"
  1095. claim.name: locale
  1096. jsonType.label: String
  1097. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-picture') | ansible.builtin.to_uuid }}
  1098. name: picture
  1099. protocol: openid-connect
  1100. protocolMapper: oidc-usermodel-attribute-mapper
  1101. consentRequired: false
  1102. config:
  1103. introspection.token.claim: "true"
  1104. userinfo.token.claim: "true"
  1105. user.attribute: picture
  1106. id.token.claim: "true"
  1107. access.token.claim: "true"
  1108. claim.name: picture
  1109. jsonType.label: String
  1110. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-given-name') | ansible.builtin.to_uuid }}
  1111. name: given name
  1112. protocol: openid-connect
  1113. protocolMapper: oidc-usermodel-attribute-mapper
  1114. consentRequired: false
  1115. config:
  1116. introspection.token.claim: "true"
  1117. userinfo.token.claim: "true"
  1118. user.attribute: firstName
  1119. id.token.claim: "true"
  1120. access.token.claim: "true"
  1121. claim.name: given_name
  1122. jsonType.label: String
  1123. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-profile') | ansible.builtin.to_uuid }}
  1124. name: profile
  1125. protocol: openid-connect
  1126. protocolMapper: oidc-usermodel-attribute-mapper
  1127. consentRequired: false
  1128. config:
  1129. introspection.token.claim: "true"
  1130. userinfo.token.claim: "true"
  1131. user.attribute: profile
  1132. id.token.claim: "true"
  1133. access.token.claim: "true"
  1134. claim.name: profile
  1135. jsonType.label: String
  1136. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-birthdate') | ansible.builtin.to_uuid }}
  1137. name: birthdate
  1138. protocol: openid-connect
  1139. protocolMapper: oidc-usermodel-attribute-mapper
  1140. consentRequired: false
  1141. config:
  1142. introspection.token.claim: "true"
  1143. userinfo.token.claim: "true"
  1144. user.attribute: birthdate
  1145. id.token.claim: "true"
  1146. access.token.claim: "true"
  1147. claim.name: birthdate
  1148. jsonType.label: String
  1149. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-zoneinfo') | ansible.builtin.to_uuid }}
  1150. name: zoneinfo
  1151. protocol: openid-connect
  1152. protocolMapper: oidc-usermodel-attribute-mapper
  1153. consentRequired: false
  1154. config:
  1155. introspection.token.claim: "true"
  1156. userinfo.token.claim: "true"
  1157. user.attribute: zoneinfo
  1158. id.token.claim: "true"
  1159. access.token.claim: "true"
  1160. claim.name: zoneinfo
  1161. jsonType.label: String
  1162. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-family-name') | ansible.builtin.to_uuid }}
  1163. name: family name
  1164. protocol: openid-connect
  1165. protocolMapper: oidc-usermodel-attribute-mapper
  1166. consentRequired: false
  1167. config:
  1168. introspection.token.claim: "true"
  1169. userinfo.token.claim: "true"
  1170. user.attribute: lastName
  1171. id.token.claim: "true"
  1172. access.token.claim: "true"
  1173. claim.name: family_name
  1174. jsonType.label: String
  1175. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-username') | ansible.builtin.to_uuid }}
  1176. name: username
  1177. protocol: openid-connect
  1178. protocolMapper: oidc-usermodel-attribute-mapper
  1179. consentRequired: false
  1180. config:
  1181. introspection.token.claim: "true"
  1182. userinfo.token.claim: "true"
  1183. user.attribute: username
  1184. id.token.claim: "true"
  1185. access.token.claim: "true"
  1186. claim.name: preferred_username
  1187. jsonType.label: String
  1188. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-nickname') | ansible.builtin.to_uuid }}
  1189. name: nickname
  1190. protocol: openid-connect
  1191. protocolMapper: oidc-usermodel-attribute-mapper
  1192. consentRequired: false
  1193. config:
  1194. introspection.token.claim: "true"
  1195. userinfo.token.claim: "true"
  1196. user.attribute: nickname
  1197. id.token.claim: "true"
  1198. access.token.claim: "true"
  1199. claim.name: nickname
  1200. jsonType.label: String
  1201. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-middle-name') | ansible.builtin.to_uuid }}
  1202. name: middle name
  1203. protocol: openid-connect
  1204. protocolMapper: oidc-usermodel-attribute-mapper
  1205. consentRequired: false
  1206. config:
  1207. introspection.token.claim: "true"
  1208. userinfo.token.claim: "true"
  1209. user.attribute: middleName
  1210. id.token.claim: "true"
  1211. access.token.claim: "true"
  1212. claim.name: middle_name
  1213. jsonType.label: String
  1214. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-gender') | ansible.builtin.to_uuid }}
  1215. name: gender
  1216. protocol: openid-connect
  1217. protocolMapper: oidc-usermodel-attribute-mapper
  1218. consentRequired: false
  1219. config:
  1220. introspection.token.claim: "true"
  1221. userinfo.token.claim: "true"
  1222. user.attribute: gender
  1223. id.token.claim: "true"
  1224. access.token.claim: "true"
  1225. claim.name: gender
  1226. jsonType.label: String
  1227. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-cscope-profile-pm-updated-at') | ansible.builtin.to_uuid }}
  1228. name: updated at
  1229. protocol: openid-connect
  1230. protocolMapper: oidc-usermodel-attribute-mapper
  1231. consentRequired: false
  1232. config:
  1233. introspection.token.claim: "true"
  1234. userinfo.token.claim: "true"
  1235. user.attribute: updatedAt
  1236. id.token.claim: "true"
  1237. access.token.claim: "true"
  1238. claim.name: updated_at
  1239. jsonType.label: long
  1240. defaultDefaultClientScopes:
  1241. - role_list
  1242. - saml_organization
  1243. - profile
  1244. - email
  1245. - roles
  1246. - web-origins
  1247. - acr
  1248. - basic
  1249. defaultOptionalClientScopes:
  1250. - offline_access
  1251. - address
  1252. - phone
  1253. - microprofile-jwt
  1254. - organization
  1255. browserSecurityHeaders:
  1256. contentSecurityPolicyReportOnly: ""
  1257. xContentTypeOptions: nosniff
  1258. referrerPolicy: no-referrer
  1259. xRobotsTag: none
  1260. xFrameOptions: SAMEORIGIN
  1261. contentSecurityPolicy: frame-src 'self'; frame-ancestors 'self'; object-src 'none';
  1262. strictTransportSecurity: max-age=31536000; includeSubDomains
  1263. smtpServer: {}
  1264. eventsEnabled: false
  1265. eventsListeners:
  1266. - jboss-logging
  1267. enabledEventTypes: []
  1268. adminEventsEnabled: false
  1269. adminEventsDetailsEnabled: false
  1270. identityProviders: []
  1271. identityProviderMappers: []
  1272. components:
  1273. org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy:
  1274. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-max-clients') | ansible.builtin.to_uuid }}
  1275. name: Max Clients Limit
  1276. providerId: max-clients
  1277. subType: anonymous
  1278. subComponents: {}
  1279. config:
  1280. max-clients:
  1281. - "200"
  1282. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-fullscope') | ansible.builtin.to_uuid }}
  1283. name: Full Scope Disabled
  1284. providerId: scope
  1285. subType: anonymous
  1286. subComponents: {}
  1287. config: {}
  1288. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-protomap-anon') | ansible.builtin.to_uuid }}
  1289. name: Allowed Protocol Mapper Types
  1290. providerId: allowed-protocol-mappers
  1291. subType: anonymous
  1292. subComponents: {}
  1293. config:
  1294. allowed-protocol-mapper-types:
  1295. - oidc-sha256-pairwise-sub-mapper
  1296. - saml-user-attribute-mapper
  1297. - saml-user-property-mapper
  1298. - oidc-address-mapper
  1299. - oidc-usermodel-property-mapper
  1300. - oidc-full-name-mapper
  1301. - saml-role-list-mapper
  1302. - oidc-usermodel-attribute-mapper
  1303. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-trusted-hosts') | ansible.builtin.to_uuid }}
  1304. name: Trusted Hosts
  1305. providerId: trusted-hosts
  1306. subType: anonymous
  1307. subComponents: {}
  1308. config:
  1309. host-sending-registration-request-must-match:
  1310. - "true"
  1311. client-uris-must-match:
  1312. - "true"
  1313. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-protomap-auth') | ansible.builtin.to_uuid }}
  1314. name: Allowed Protocol Mapper Types
  1315. providerId: allowed-protocol-mappers
  1316. subType: authenticated
  1317. subComponents: {}
  1318. config:
  1319. allowed-protocol-mapper-types:
  1320. - saml-user-attribute-mapper
  1321. - saml-user-property-mapper
  1322. - oidc-sha256-pairwise-sub-mapper
  1323. - saml-role-list-mapper
  1324. - oidc-address-mapper
  1325. - oidc-usermodel-attribute-mapper
  1326. - oidc-full-name-mapper
  1327. - oidc-usermodel-property-mapper
  1328. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-consentreq') | ansible.builtin.to_uuid }}
  1329. name: Consent Required
  1330. providerId: consent-required
  1331. subType: anonymous
  1332. subComponents: {}
  1333. config: {}
  1334. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-cliscope-anon') | ansible.builtin.to_uuid }}
  1335. name: Allowed Client Scopes
  1336. providerId: allowed-client-templates
  1337. subType: anonymous
  1338. subComponents: {}
  1339. config:
  1340. allow-default-scopes:
  1341. - "true"
  1342. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-regpol-allowed-cliscope-auth') | ansible.builtin.to_uuid }}
  1343. name: Allowed Client Scopes
  1344. providerId: allowed-client-templates
  1345. subType: authenticated
  1346. subComponents: {}
  1347. config:
  1348. allow-default-scopes:
  1349. - "true"
  1350. org.keycloak.keys.KeyProvider:
  1351. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-hs512') | ansible.builtin.to_uuid }}
  1352. name: hmac-generated-hs512
  1353. providerId: hmac-generated
  1354. subComponents: {}
  1355. config:
  1356. priority:
  1357. - "100"
  1358. algorithm:
  1359. - HS512
  1360. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-aesgen') | ansible.builtin.to_uuid }}
  1361. name: aes-generated
  1362. providerId: aes-generated
  1363. subComponents: {}
  1364. config:
  1365. priority:
  1366. - "100"
  1367. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-rsaencgen') | ansible.builtin.to_uuid }}
  1368. name: rsa-enc-generated
  1369. providerId: rsa-enc-generated
  1370. subComponents: {}
  1371. config:
  1372. priority:
  1373. - "100"
  1374. algorithm:
  1375. - RSA-OAEP
  1376. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-keyprov-rsagen') | ansible.builtin.to_uuid }}
  1377. name: rsa-generated
  1378. providerId: rsa-generated
  1379. subComponents: {}
  1380. config:
  1381. priority:
  1382. - "100"
  1383. internationalizationEnabled: false
  1384. supportedLocales: []
  1385. authenticationFlows:
  1386. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-acct-vrfy-opt') | ansible.builtin.to_uuid }}
  1387. alias: Account verification options
  1388. description: Method with which to verity the existing account
  1389. providerId: basic-flow
  1390. topLevel: false
  1391. builtIn: true
  1392. authenticationExecutions:
  1393. - authenticator: idp-email-verification
  1394. authenticatorFlow: false
  1395. requirement: ALTERNATIVE
  1396. priority: 10
  1397. autheticatorFlow: false
  1398. userSetupAllowed: false
  1399. - authenticatorFlow: true
  1400. requirement: ALTERNATIVE
  1401. priority: 20
  1402. autheticatorFlow: true
  1403. flowAlias: Verify Existing Account by Re-authentication
  1404. userSetupAllowed: false
  1405. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-brws-cond-otp') | ansible.builtin.to_uuid }}
  1406. alias: Browser - Conditional OTP
  1407. description: Flow to determine if the OTP is required for the authentication
  1408. providerId: basic-flow
  1409. topLevel: false
  1410. builtIn: true
  1411. authenticationExecutions:
  1412. - authenticator: conditional-user-configured
  1413. authenticatorFlow: false
  1414. requirement: REQUIRED
  1415. priority: 10
  1416. autheticatorFlow: false
  1417. userSetupAllowed: false
  1418. - authenticator: auth-otp-form
  1419. authenticatorFlow: false
  1420. requirement: REQUIRED
  1421. priority: 20
  1422. autheticatorFlow: false
  1423. userSetupAllowed: false
  1424. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-brws-cond-org') | ansible.builtin.to_uuid }}
  1425. alias: Browser - Conditional Organization
  1426. description: Flow to determine if the organization identity-first login is to be used
  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: organization
  1438. authenticatorFlow: false
  1439. requirement: ALTERNATIVE
  1440. priority: 20
  1441. autheticatorFlow: false
  1442. userSetupAllowed: false
  1443. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-dg-cond-otp') | ansible.builtin.to_uuid }}
  1444. alias: Direct Grant - Conditional OTP
  1445. description: Flow to determine if the OTP is required for the authentication
  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: direct-grant-validate-otp
  1457. authenticatorFlow: false
  1458. requirement: REQUIRED
  1459. priority: 20
  1460. autheticatorFlow: false
  1461. userSetupAllowed: false
  1462. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-fbrok-login-cond-org') | ansible.builtin.to_uuid }}
  1463. alias: First Broker Login - Conditional Organization
  1464. description: Flow to determine if the authenticator that adds organization members is to be used
  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: idp-add-organization-member
  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-otp') | ansible.builtin.to_uuid }}
  1482. alias: First broker login - Conditional OTP
  1483. description: Flow to determine if the OTP is required for the authentication
  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: auth-otp-form
  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-handle-existing') | ansible.builtin.to_uuid }}
  1501. alias: Handle Existing Account
  1502. description: Handle what to do if there is existing account with same email/username like authenticated identity provider
  1503. providerId: basic-flow
  1504. topLevel: false
  1505. builtIn: true
  1506. authenticationExecutions:
  1507. - authenticator: idp-confirm-link
  1508. authenticatorFlow: false
  1509. requirement: REQUIRED
  1510. priority: 10
  1511. autheticatorFlow: false
  1512. userSetupAllowed: false
  1513. - authenticatorFlow: true
  1514. requirement: REQUIRED
  1515. priority: 20
  1516. autheticatorFlow: true
  1517. flowAlias: Account verification options
  1518. userSetupAllowed: false
  1519. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-org') | ansible.builtin.to_uuid }}
  1520. alias: Organization
  1521. providerId: basic-flow
  1522. topLevel: false
  1523. builtIn: true
  1524. authenticationExecutions:
  1525. - authenticatorFlow: true
  1526. requirement: CONDITIONAL
  1527. priority: 10
  1528. autheticatorFlow: true
  1529. flowAlias: Browser - Conditional Organization
  1530. userSetupAllowed: false
  1531. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-cond-otp') | ansible.builtin.to_uuid }}
  1532. alias: Reset - Conditional OTP
  1533. description: Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.
  1534. providerId: basic-flow
  1535. topLevel: false
  1536. builtIn: true
  1537. authenticationExecutions:
  1538. - authenticator: conditional-user-configured
  1539. authenticatorFlow: false
  1540. requirement: REQUIRED
  1541. priority: 10
  1542. autheticatorFlow: false
  1543. userSetupAllowed: false
  1544. - authenticator: reset-otp
  1545. authenticatorFlow: false
  1546. requirement: REQUIRED
  1547. priority: 20
  1548. autheticatorFlow: false
  1549. userSetupAllowed: false
  1550. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-ucreat-or-link') | ansible.builtin.to_uuid }}
  1551. alias: User creation or linking
  1552. description: Flow for the existing/non-existing user alternatives
  1553. providerId: basic-flow
  1554. topLevel: false
  1555. builtIn: true
  1556. authenticationExecutions:
  1557. - authenticatorConfig: create unique user config
  1558. authenticator: idp-create-user-if-unique
  1559. authenticatorFlow: false
  1560. requirement: ALTERNATIVE
  1561. priority: 10
  1562. autheticatorFlow: false
  1563. userSetupAllowed: false
  1564. - authenticatorFlow: true
  1565. requirement: ALTERNATIVE
  1566. priority: 20
  1567. autheticatorFlow: true
  1568. flowAlias: Handle Existing Account
  1569. userSetupAllowed: false
  1570. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-vrfy-existing-reauth') | ansible.builtin.to_uuid }}
  1571. alias: Verify Existing Account by Re-authentication
  1572. description: Reauthentication of existing account
  1573. providerId: basic-flow
  1574. topLevel: false
  1575. builtIn: true
  1576. authenticationExecutions:
  1577. - authenticator: idp-username-password-form
  1578. authenticatorFlow: false
  1579. requirement: REQUIRED
  1580. priority: 10
  1581. autheticatorFlow: false
  1582. userSetupAllowed: false
  1583. - authenticatorFlow: true
  1584. requirement: CONDITIONAL
  1585. priority: 20
  1586. autheticatorFlow: true
  1587. flowAlias: First broker login - Conditional OTP
  1588. userSetupAllowed: false
  1589. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-brws-based-auth') | ansible.builtin.to_uuid }}
  1590. alias: browser
  1591. description: Browser based authentication
  1592. providerId: basic-flow
  1593. topLevel: true
  1594. builtIn: true
  1595. authenticationExecutions:
  1596. - authenticator: auth-cookie
  1597. authenticatorFlow: false
  1598. requirement: ALTERNATIVE
  1599. priority: 10
  1600. autheticatorFlow: false
  1601. userSetupAllowed: false
  1602. - authenticator: auth-spnego
  1603. authenticatorFlow: false
  1604. requirement: DISABLED
  1605. priority: 20
  1606. autheticatorFlow: false
  1607. userSetupAllowed: false
  1608. - authenticator: identity-provider-redirector
  1609. authenticatorFlow: false
  1610. requirement: ALTERNATIVE
  1611. priority: 25
  1612. autheticatorFlow: false
  1613. userSetupAllowed: false
  1614. - authenticatorFlow: true
  1615. requirement: ALTERNATIVE
  1616. priority: 26
  1617. autheticatorFlow: true
  1618. flowAlias: Organization
  1619. userSetupAllowed: false
  1620. - authenticatorFlow: true
  1621. requirement: ALTERNATIVE
  1622. priority: 30
  1623. autheticatorFlow: true
  1624. flowAlias: forms
  1625. userSetupAllowed: false
  1626. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-base-client-auth') | ansible.builtin.to_uuid }}
  1627. alias: clients
  1628. description: Base authentication for clients
  1629. providerId: client-flow
  1630. topLevel: true
  1631. builtIn: true
  1632. authenticationExecutions:
  1633. - authenticator: client-secret
  1634. authenticatorFlow: false
  1635. requirement: ALTERNATIVE
  1636. priority: 10
  1637. autheticatorFlow: false
  1638. userSetupAllowed: false
  1639. - authenticator: client-jwt
  1640. authenticatorFlow: false
  1641. requirement: ALTERNATIVE
  1642. priority: 20
  1643. autheticatorFlow: false
  1644. userSetupAllowed: false
  1645. - authenticator: client-secret-jwt
  1646. authenticatorFlow: false
  1647. requirement: ALTERNATIVE
  1648. priority: 30
  1649. autheticatorFlow: false
  1650. userSetupAllowed: false
  1651. - authenticator: client-x509
  1652. authenticatorFlow: false
  1653. requirement: ALTERNATIVE
  1654. priority: 40
  1655. autheticatorFlow: false
  1656. userSetupAllowed: false
  1657. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-dgrant-oidc-owner') | ansible.builtin.to_uuid }}
  1658. alias: direct grant
  1659. description: OpenID Connect Resource Owner Grant
  1660. providerId: basic-flow
  1661. topLevel: true
  1662. builtIn: true
  1663. authenticationExecutions:
  1664. - authenticator: direct-grant-validate-username
  1665. authenticatorFlow: false
  1666. requirement: REQUIRED
  1667. priority: 10
  1668. autheticatorFlow: false
  1669. userSetupAllowed: false
  1670. - authenticator: direct-grant-validate-password
  1671. authenticatorFlow: false
  1672. requirement: REQUIRED
  1673. priority: 20
  1674. autheticatorFlow: false
  1675. userSetupAllowed: false
  1676. - authenticatorFlow: true
  1677. requirement: CONDITIONAL
  1678. priority: 30
  1679. autheticatorFlow: true
  1680. flowAlias: Direct Grant - Conditional OTP
  1681. userSetupAllowed: false
  1682. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-docker-auth') | ansible.builtin.to_uuid }}
  1683. alias: docker auth
  1684. description: Used by Docker clients to authenticate against the IDP
  1685. providerId: basic-flow
  1686. topLevel: true
  1687. builtIn: true
  1688. authenticationExecutions:
  1689. - authenticator: docker-http-basic-authenticator
  1690. authenticatorFlow: false
  1691. requirement: REQUIRED
  1692. priority: 10
  1693. autheticatorFlow: false
  1694. userSetupAllowed: false
  1695. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-fbrok-login') | ansible.builtin.to_uuid }}
  1696. alias: first broker login
  1697. description: Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account
  1698. providerId: basic-flow
  1699. topLevel: true
  1700. builtIn: true
  1701. authenticationExecutions:
  1702. - authenticatorConfig: review profile config
  1703. authenticator: idp-review-profile
  1704. authenticatorFlow: false
  1705. requirement: REQUIRED
  1706. priority: 10
  1707. autheticatorFlow: false
  1708. userSetupAllowed: false
  1709. - authenticatorFlow: true
  1710. requirement: REQUIRED
  1711. priority: 20
  1712. autheticatorFlow: true
  1713. flowAlias: User creation or linking
  1714. userSetupAllowed: false
  1715. - authenticatorFlow: true
  1716. requirement: CONDITIONAL
  1717. priority: 50
  1718. autheticatorFlow: true
  1719. flowAlias: First Broker Login - Conditional Organization
  1720. userSetupAllowed: false
  1721. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-forms') | ansible.builtin.to_uuid }}
  1722. alias: forms
  1723. description: Username, password, otp and other auth forms.
  1724. providerId: basic-flow
  1725. topLevel: false
  1726. builtIn: true
  1727. authenticationExecutions:
  1728. - authenticator: auth-username-password-form
  1729. authenticatorFlow: false
  1730. requirement: REQUIRED
  1731. priority: 10
  1732. autheticatorFlow: false
  1733. userSetupAllowed: false
  1734. - authenticatorFlow: true
  1735. requirement: CONDITIONAL
  1736. priority: 20
  1737. autheticatorFlow: true
  1738. flowAlias: Browser - Conditional OTP
  1739. userSetupAllowed: false
  1740. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-reg-flow') | ansible.builtin.to_uuid }}
  1741. alias: registration
  1742. description: Registration flow
  1743. providerId: basic-flow
  1744. topLevel: true
  1745. builtIn: true
  1746. authenticationExecutions:
  1747. - authenticator: registration-page-form
  1748. authenticatorFlow: true
  1749. requirement: REQUIRED
  1750. priority: 10
  1751. autheticatorFlow: true
  1752. flowAlias: registration form
  1753. userSetupAllowed: false
  1754. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-reg-form') | ansible.builtin.to_uuid }}
  1755. alias: registration form
  1756. description: Registration form
  1757. providerId: form-flow
  1758. topLevel: false
  1759. builtIn: true
  1760. authenticationExecutions:
  1761. - authenticator: registration-user-creation
  1762. authenticatorFlow: false
  1763. requirement: REQUIRED
  1764. priority: 20
  1765. autheticatorFlow: false
  1766. userSetupAllowed: false
  1767. - authenticator: registration-password-action
  1768. authenticatorFlow: false
  1769. requirement: REQUIRED
  1770. priority: 50
  1771. autheticatorFlow: false
  1772. userSetupAllowed: false
  1773. - authenticator: registration-recaptcha-action
  1774. authenticatorFlow: false
  1775. requirement: DISABLED
  1776. priority: 60
  1777. autheticatorFlow: false
  1778. userSetupAllowed: false
  1779. - authenticator: registration-terms-and-conditions
  1780. authenticatorFlow: false
  1781. requirement: DISABLED
  1782. priority: 70
  1783. autheticatorFlow: false
  1784. userSetupAllowed: false
  1785. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-reset-creds') | ansible.builtin.to_uuid }}
  1786. alias: reset credentials
  1787. description: Reset credentials for a user if they forgot their password or something
  1788. providerId: basic-flow
  1789. topLevel: true
  1790. builtIn: true
  1791. authenticationExecutions:
  1792. - authenticator: reset-credentials-choose-user
  1793. authenticatorFlow: false
  1794. requirement: REQUIRED
  1795. priority: 10
  1796. autheticatorFlow: false
  1797. userSetupAllowed: false
  1798. - authenticator: reset-credential-email
  1799. authenticatorFlow: false
  1800. requirement: REQUIRED
  1801. priority: 20
  1802. autheticatorFlow: false
  1803. userSetupAllowed: false
  1804. - authenticator: reset-password
  1805. authenticatorFlow: false
  1806. requirement: REQUIRED
  1807. priority: 30
  1808. autheticatorFlow: false
  1809. userSetupAllowed: false
  1810. - authenticatorFlow: true
  1811. requirement: CONDITIONAL
  1812. priority: 40
  1813. autheticatorFlow: true
  1814. flowAlias: Reset - Conditional OTP
  1815. userSetupAllowed: false
  1816. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authflow-saml-ecp') | ansible.builtin.to_uuid }}
  1817. alias: saml ecp
  1818. description: SAML ECP Profile Authentication Flow
  1819. providerId: basic-flow
  1820. topLevel: true
  1821. builtIn: true
  1822. authenticationExecutions:
  1823. - authenticator: http-basic-authenticator
  1824. authenticatorFlow: false
  1825. requirement: REQUIRED
  1826. priority: 10
  1827. autheticatorFlow: false
  1828. userSetupAllowed: false
  1829. authenticatorConfig:
  1830. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authconfig-unique-user') | ansible.builtin.to_uuid }}
  1831. alias: create unique user config
  1832. config:
  1833. require.password.update.after.registration: "false"
  1834. - id: {{ ((rhbk.name | default('sso')) + '-' + (rhbk.realm | default('sample-realm')) + '-authconfig-review-profile-') | ansible.builtin.to_uuid }}
  1835. alias: review profile config
  1836. config:
  1837. update.profile.on.first.login: missing
  1838. requiredActions:
  1839. - alias: CONFIGURE_TOTP
  1840. name: Configure OTP
  1841. providerId: CONFIGURE_TOTP
  1842. enabled: true
  1843. defaultAction: false
  1844. priority: 10
  1845. config: {}
  1846. - alias: TERMS_AND_CONDITIONS
  1847. name: Terms and Conditions
  1848. providerId: TERMS_AND_CONDITIONS
  1849. enabled: false
  1850. defaultAction: false
  1851. priority: 20
  1852. config: {}
  1853. - alias: UPDATE_PASSWORD
  1854. name: Update Password
  1855. providerId: UPDATE_PASSWORD
  1856. enabled: true
  1857. defaultAction: false
  1858. priority: 30
  1859. config: {}
  1860. - alias: UPDATE_PROFILE
  1861. name: Update Profile
  1862. providerId: UPDATE_PROFILE
  1863. enabled: true
  1864. defaultAction: false
  1865. priority: 40
  1866. config: {}
  1867. - alias: VERIFY_EMAIL
  1868. name: Verify Email
  1869. providerId: VERIFY_EMAIL
  1870. enabled: true
  1871. defaultAction: false
  1872. priority: 50
  1873. config: {}
  1874. - alias: delete_account
  1875. name: Delete Account
  1876. providerId: delete_account
  1877. enabled: false
  1878. defaultAction: false
  1879. priority: 60
  1880. config: {}
  1881. - alias: webauthn-register
  1882. name: Webauthn Register
  1883. providerId: webauthn-register
  1884. enabled: true
  1885. defaultAction: false
  1886. priority: 70
  1887. config: {}
  1888. - alias: webauthn-register-passwordless
  1889. name: Webauthn Register Passwordless
  1890. providerId: webauthn-register-passwordless
  1891. enabled: true
  1892. defaultAction: false
  1893. priority: 80
  1894. config: {}
  1895. - alias: VERIFY_PROFILE
  1896. name: Verify Profile
  1897. providerId: VERIFY_PROFILE
  1898. enabled: true
  1899. defaultAction: false
  1900. priority: 90
  1901. config: {}
  1902. - alias: delete_credential
  1903. name: Delete Credential
  1904. providerId: delete_credential
  1905. enabled: true
  1906. defaultAction: false
  1907. priority: 100
  1908. config: {}
  1909. - alias: update_user_locale
  1910. name: Update User Locale
  1911. providerId: update_user_locale
  1912. enabled: true
  1913. defaultAction: false
  1914. priority: 1000
  1915. config: {}
  1916. browserFlow: browser
  1917. registrationFlow: registration
  1918. directGrantFlow: direct grant
  1919. resetCredentialsFlow: reset credentials
  1920. clientAuthenticationFlow: clients
  1921. dockerAuthenticationFlow: docker auth
  1922. firstBrokerLoginFlow: first broker login
  1923. attributes:
  1924. cibaBackchannelTokenDeliveryMode: poll
  1925. cibaExpiresIn: "120"
  1926. cibaAuthRequestedUserHint: login_hint
  1927. oauth2DeviceCodeLifespan: "600"
  1928. oauth2DevicePollingInterval: "5"
  1929. parRequestUriLifespan: "60"
  1930. cibaInterval: "5"
  1931. realmReusableOtpCode: "false"
  1932. keycloakVersion: 26.2.7.redhat-00001
  1933. userManagedAccessAllowed: false
  1934. organizationsEnabled: false
  1935. verifiableCredentialsEnabled: false
  1936. adminPermissionsEnabled: false
  1937. clientProfiles:
  1938. profiles: []
  1939. clientPolicies:
  1940. policies: []