{"id":107284,"date":"2025-12-12T17:22:28","date_gmt":"2025-12-12T11:52:28","guid":{"rendered":"https:\/\/cloudfoundation.com\/blog\/?p=107284"},"modified":"2025-12-12T17:45:25","modified_gmt":"2025-12-12T12:15:25","slug":"forgerock-policy-and-scripting-training","status":"publish","type":"post","link":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/","title":{"rendered":"ForgeRock Policy and Scripting Training"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Times New Roman||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;]<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Resource_URL_Setup\" >ForgeRock Resource URL Setup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Action_Rules_and_Access_Control\" >ForgeRock Action Rules and Access Control<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Subject_Conditions_and_Policy_Assignment\" >ForgeRock Subject Conditions and Policy Assignment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Environment_and_Authentication_Conditions\" >ForgeRock Environment and Authentication Conditions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Groups_Identities_and_Policy_Binding\" >ForgeRock Groups, Identities, and Policy Binding<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Managing_User_Access_in_ForgeRock\" >Managing User Access in ForgeRock<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Training\" >ForgeRock Training<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Configuring_Role-Based_Access_in_ForgeRock\" >Configuring Role-Based Access in ForgeRock<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Using_Policy_Controls_in_ForgeRock\" >Using Policy Controls in ForgeRock<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Understanding_ForgeRock_Resource_Types\" >Understanding ForgeRock Resource Types<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Working_With_Scripted_Policies_in_ForgeRock\" >Working With Scripted Policies in ForgeRock<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Using_ForgeRock_to_Customize_Attributes_and_Authorization_Messages\" >Using ForgeRock to Customize Attributes and Authorization Messages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Online_Training\" >ForgeRock Online Training<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Creating_New_Scripts_in_ForgeRock_for_Authentication_Trees\" >Creating New Scripts in ForgeRock for Authentication Trees<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Building_Customized_ForgeRock_Authentication_Nodes\" >Building Customized ForgeRock Authentication Nodes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#_Using_ForgeRock_Scripts_for_OAuth_Token_Modification_and_Claims\" >\u00a0Using ForgeRock Scripts for OAuth, Token Modification, and Claims<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#Building_Customized_ForgeRock_Authentication_Nodes-2\" >Building Customized ForgeRock Authentication Nodes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#ForgeRock_Course_Price\" >ForgeRock Course Price<\/a><\/li><\/ul><\/nav><\/div>\n\n<h2><span class=\"ez-toc-section\" id=\"ForgeRock_Resource_URL_Setup\"><\/span>ForgeRock Resource URL Setup<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When I work with ForgeRock, I often start by showing learners how flexible the resource URL configuration can be.<\/p>\n<p>For example, when I add a question mark at the end of a URL pattern, ForgeRock treats it as a way to allow any query string.<\/p>\n<p>With ForgeRock, I can quickly set wildcard patterns so the system responds to any request containing paths, parameters, or user-specific identifiers.<\/p>\n<p>In real projects, different web applications rely on ForgeRock to decide who can access what.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"ForgeRock_Action_Rules_and_Access_Control\"><\/span>ForgeRock Action Rules and Access Control<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>After defining resources, I move to actions because ForgeRock lets us specify exactly what a user can do.<\/p>\n<p>I explain that actions such as GET, POST, PATCH, DELETE, and OPTIONS represent the types of interactions allowed on each URL.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Access-Control-1.png\" alt=\"\" width=\"800\" height=\"1867\" \/><\/p>\n<p>In ForgeRock, when I assign only GET, I restrict the user to read-only interactions. When I allow POST or PATCH, ForgeRock recognizes that the user can update or modify data.<\/p>\n<p>I also show how ForgeRock gives the option to allow or deny access at each action level.<\/p>\n<p>This control helps learners understand that ForgeRock authorization isn\u2019t just about broad permissions, it\u2019s about precise rules.<\/p>\n<p>When we add an action in ForgeRock and bind it to a policy, we teach the system how to treat every incoming request.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"ForgeRock_Subject_Conditions_and_Policy_Assignment\"><\/span>ForgeRock Subject Conditions and Policy Assignment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Once the actions are clear, I introduce subject conditions because this is where ForgeRock truly becomes powerful.<\/p>\n<p>For example, when we configure OpenID Connect clients in ForgeRock, we can bind a policy to a specific client name.<\/p>\n<p>This step helps learners see the connection between authentication and authorization inside ForgeRock.<\/p>\n<p>If the subject doesn\u2019t match, ForgeRock simply skips that rule.<\/p>\n<p><video class=\"\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"800\" height=\"auto\"><source loading=\"lazy\" class=\"lazy lazy-hidden lazy lazy-hidden lazy lazy-hidden\" data-lazy-type=\"video\" data-src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Policy-Conditions.webm\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Policy-Conditions.webm\" \/><\/video><\/p>\n<p>This behavior helps everyone understand that ForgeRock ensures only the right identities receive access.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"ForgeRock_Environment_and_Authentication_Conditions\"><\/span>ForgeRock Environment and Authentication Conditions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>For example, ForgeRock allows us to set rules based on session time, authentication level, IP address, time zone, or even authentication method.<\/p>\n<p>When I explain authentication levels, I clarify that username-password login is level zero, and multifactor authentication becomes level one.<\/p>\n<p>ForgeRock then uses these values to decide who qualifies for a policy.<\/p>\n<p>If a policy needs to apply only when users log in from a certain network, ForgeRock handles it smoothly.<\/p>\n<p>These environment controls help learners understand that ForgeRock isn\u2019t only validating identity, it is evaluating the entire context of the user\u2019s session.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"ForgeRock_Groups_Identities_and_Policy_Binding\"><\/span><strong>ForgeRock Groups, Identities, and Policy Binding<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When we create a group inside ForgeRock and assign users to it, those users automatically inherit any policy bound to that group.<\/p>\n<p>This helps them understand how ForgeRock cascades permissions in real environments.<\/p>\n<p>As we apply these settings inside ForgeRock, learners can see how authorization decisions flow across identities, policies, and environments.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Managing_User_Access_in_ForgeRock\"><\/span>Managing User Access in ForgeRock<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When I log in with a basic test user in ForgeRock, the first thing I notice is that the user only sees the dashboard.<\/p>\n<p>At this stage, the account has minimal access, and I want to show how easily we can extend or restrict permissions inside ForgeRock.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-User-Access.png\" alt=\"\" width=\"800\" height=\"2424\" \/><\/p>\n<p>I go to the Members section, add the user to a group, and save the changes.<\/p>\n<p>Right after that, I move to the Privileges section and assign additional access.<\/p>\n<p>With one commit in ForgeRock, the user immediately gains more control.<\/p>\n<p>When I log out and log back in, I can validate the new permissions.<\/p>\n<p>The user now appears as an admin inside ForgeRock and can access everything assigned to the realm.<\/p>\n<p>All the configuration trees I created in ForgeRock become visible to the user, showing how flexible the platform is when managing access.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_3,1_3,1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#064399&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_start=&#8221;#0095f2&#8243; background_color_gradient_end=&#8221;#7dbed8&#8243; background_color_gradient_direction=&#8221;92deg&#8221; background_color_gradient_start_position=&#8221;35%&#8221; background_color_gradient_end_position=&#8221;80%&#8221; transform_scale=&#8221;73%|62%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;-53px|-50px&#8221; transform_translate_linked=&#8221;off&#8221; link_option_url=&#8221;https:\/\/cloudfoundation.com\/datorama-training\/&#8221; link_option_url_new_window=&#8221;on&#8221;][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_image src=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/SS_436-_Converted_-1.png&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; transform_scale=&#8221;114%|112%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;25px|-4px&#8221; transform_translate_linked=&#8221;off&#8221; width=&#8221;98.1%&#8221; custom_margin=&#8221;|7px|||false|false&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Georgia|700|||||||&#8221; text_font_size=&#8221;23px&#8221; text_line_height=&#8221;1.3em&#8221; header_font=&#8221;Georgia|700|||||||&#8221; header_font_size=&#8221;21px&#8221; header_letter_spacing=&#8221;-1px&#8221; header_line_height=&#8221;2em&#8221; transform_scale=&#8221;171%|159%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;40px|44px&#8221; transform_translate_linked=&#8221;off&#8221; transform_origin=&#8221;70%|50%&#8221; z_index=&#8221;-161&#8243; width=&#8221;100%&#8221; custom_margin=&#8221;|-215px||||&#8221; custom_padding=&#8221;|0px||||&#8221; link_option_url=&#8221;https:\/\/cloudfoundation.com\/datorama-training\/&#8221; link_option_url_new_window=&#8221;on&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"ForgeRock_Training\"><\/span><strong><span style=\"color: #ffffff;\">ForgeRock Training<\/span><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/cloudfoundation.com\/&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;Explore Course Content&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#0C71C3&#8243; button_bg_color=&#8221;#FFFFFF&#8221; button_font=&#8221;|700|||||||&#8221; transform_translate=&#8221;64px|65px&#8221; transform_translate_linked=&#8221;off&#8221;][\/et_pb_button][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_image src=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2019\/06\/logo_resize_color.png&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; transform_translate=&#8221;-36px|0px&#8221; transform_translate_linked=&#8221;off&#8221; custom_margin=&#8221;|||178px||&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Configuring_Role-Based_Access_in_ForgeRock\"><\/span>Configuring Role-Based Access in ForgeRock<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sometimes I need to reduce permissions instead of increasing them.<\/p>\n<p>So I return to the Privileges panel in ForgeRock, remove admin rights, and assign only read-level access.<\/p>\n<p>When I log in again, I see that the user can no longer modify anything.<\/p>\n<p>ForgeRock restricts the view to very limited authentication details, exactly as expected.<\/p>\n<p>I often assign roles such as cache admin, log admin, agent admin, and federated admin in ForgeRock depending on what the team needs.<\/p>\n<p>For example, a log admin in ForgeRock can only view and access log files.<\/p>\n<p>They cannot edit anything else.<\/p>\n<p>A federated admin in ForgeRock can manage metadata configuration across realms.<\/p>\n<p>This level of control helps me divide responsibilities within a large team, making ForgeRock extremely useful for real project scenarios.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Using_Policy_Controls_in_ForgeRock\"><\/span>Using Policy Controls in ForgeRock<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Policies in ForgeRock play a huge role in defining what users can or cannot do.<\/p>\n<p>Clients often ask for specific policy restrictions, and ForgeRock gives me the flexibility to build policies exactly the way they want.<\/p>\n<p>I can configure policies based on time, authentication type, service, tree, or any requirement the client shares.<\/p>\n<p><video class=\"\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"800\" height=\"auto\"><source loading=\"lazy\" class=\"lazy lazy-hidden lazy lazy-hidden lazy lazy-hidden\" data-lazy-type=\"video\" data-src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Policy-Controls-1.webm\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Policy-Controls-1.webm\" \/><\/video><\/p>\n<p>After setting a policy in ForgeRock, only the selected users will operate under those rules.<\/p>\n<p>Inside ForgeRock, I also manage identities, groups, and privilege sets.<\/p>\n<p>By grouping users, I ensure that only specific members receive certain access levels.<\/p>\n<p>This structured permission model inside ForgeRock keeps everything organized and secure.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Understanding_ForgeRock_Resource_Types\"><\/span>Understanding ForgeRock Resource Types<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Resource types in ForgeRock determine how URL patterns behave.<\/p>\n<p>For example, when I create a resource type in ForgeRock and apply wildcard patterns, ForgeRock interprets which URLs should be allowed or denied.<\/p>\n<p>A wildcard pattern in ForgeRock means everything after the slash is considered part of the valid URL.<\/p>\n<p>I can match complete URLs, query parameters, or patterns based on what the application needs.<\/p>\n<p>If I decide a specific pattern should not be permitted, ForgeRock lets me deny that request entirely.<\/p>\n<p>This control helps me protect endpoints and ensures that only the correct resources are accessible.<\/p>\n<p>Every resource type in ForgeRock can have its own actions read, write, delete, or deny giving me complete authority over how the system responds.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Working_With_Scripted_Policies_in_ForgeRock\"><\/span>Working With Scripted Policies in ForgeRock<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>These policies allow me to write custom logic using the built-in structure provided by ForgeRock.<\/p>\n<p>By editing the script, I can decide conditions such as which server can access a resource or whether a request from a certain country should be allowed.<\/p>\n<p>ForgeRock also lets me import and export policies in XML format.<\/p>\n<p><video class=\"\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"800\" height=\"auto\"><source loading=\"lazy\" class=\"lazy lazy-hidden lazy lazy-hidden lazy lazy-hidden\" data-lazy-type=\"video\" data-src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Scripted-Policies.webm\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Scripted-Policies.webm\" \/><\/video><\/p>\n<p>When I export a policy, ForgeRock generates an XML file that I can store or modify.<\/p>\n<p>If I want to import policies, I use the scripted policy decision framework.<\/p>\n<p>This helps me reuse policy sets across environments or projects, making ForgeRock very practical for enterprise work.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Using_ForgeRock_to_Customize_Attributes_and_Authorization_Messages\"><\/span>Using ForgeRock to Customize Attributes and Authorization Messages<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>There are many moments when I need to customize ForgeRock\u2019s behavior beyond default settings.<\/p>\n<p>For example, when a user carries an external attribute, I want ForgeRock to respond with a specific authorization outcome.<\/p>\n<p>I can script the decision and even send back customized messages like &#8216;External authentication passed&#8217; or &#8216;External authentication not passed&#8217;.<\/p>\n<p>Inside ForgeRock, I have access to multiple script types.<\/p>\n<p>I can rewrite or create new scripts using JavaScript or Groovy.<\/p>\n<p>Groovy works almost like Java, so if you already know Java, writing Groovy scripts inside ForgeRock feels natural.<\/p>\n<p>Java APIs work the same way, which makes it easier for me to build advanced logic.[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_3,1_3,1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#064399&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_start=&#8221;#ff8c7c&#8221; background_color_gradient_end=&#8221;#e5ba4e&#8221; background_color_gradient_type=&#8221;radial&#8221; background_color_gradient_direction_radial=&#8221;top left&#8221; background_color_gradient_start_position=&#8221;35%&#8221; background_color_gradient_end_position=&#8221;80%&#8221; transform_scale=&#8221;74%|69%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;-53px|-50px&#8221; transform_translate_linked=&#8221;off&#8221; custom_margin=&#8221;||-5px||false|false&#8221; custom_padding=&#8221;|||2px|false|false&#8221; link_option_url=&#8221;https:\/\/cloudfoundation.com\/datorama-training\/&#8221; link_option_url_new_window=&#8221;on&#8221;][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_image src=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/8423118_3895895.png&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; width=&#8221;85.4%&#8221; custom_margin=&#8221;-31px||-24px||false|false&#8221; custom_padding=&#8221;|22px|0px||false|false&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Georgia|700|||||||&#8221; text_font_size=&#8221;23px&#8221; text_line_height=&#8221;1.3em&#8221; header_font=&#8221;Georgia|700|||||||&#8221; header_font_size=&#8221;19px&#8221; header_letter_spacing=&#8221;-1px&#8221; header_line_height=&#8221;1.2em&#8221; transform_scale=&#8221;171%|159%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;40px|44px&#8221; transform_translate_linked=&#8221;off&#8221; transform_origin=&#8221;70%|50%&#8221; z_index=&#8221;-161&#8243; width=&#8221;100%&#8221; custom_margin=&#8221;|-215px||||&#8221; custom_padding=&#8221;|0px||||&#8221; link_option_url=&#8221;https:\/\/cloudfoundation.com\/datorama-training\/&#8221; link_option_url_new_window=&#8221;on&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"ForgeRock_Online_Training\"><\/span><strong><span style=\"color: #000000;\">ForgeRock Online Training<\/span><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/cloudfoundation.com\/&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;Up Coming Batches&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#E09900&#8243; button_bg_color=&#8221;#FFFFFF&#8221; button_font=&#8221;|700|||||||&#8221; transform_translate=&#8221;64px|65px&#8221; transform_translate_linked=&#8221;off&#8221; background_layout=&#8221;dark&#8221;][\/et_pb_button][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_image src=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2019\/06\/logo_resize_color.png&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; transform_translate=&#8221;-36px|0px&#8221; transform_translate_linked=&#8221;off&#8221; custom_margin=&#8221;|||178px||&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Creating_New_Scripts_in_ForgeRock_for_Authentication_Trees\"><\/span>Creating New Scripts in ForgeRock for Authentication Trees<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In ForgeRock Access Management, I often build custom authentication behavior using trees.<\/p>\n<p>While ForgeRock gives me plenty of built-in nodes, there are times when I need a node that doesn\u2019t exist.<\/p>\n<p>That\u2019s where the scripted decision node becomes powerful.<\/p>\n<p>I can create a script, assign it to the tree, and decide what the outcomes should be.<\/p>\n<p>Whenever I create a script in ForgeRock, I select whether the script is for client-side authentication, server-side authentication, config providers, or OAuth access.<\/p>\n<p>ForgeRock labels everything clearly, so once I pick the correct script type, I can attach it to the authentication tree and set outcomes like &#8216;true&#8217; or &#8216;false&#8217;.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Building_Customized_ForgeRock_Authentication_Nodes\"><\/span>Building Customized ForgeRock Authentication Nodes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sometimes a client uses multiple databases or older systems, and the default ForgeRock nodes don\u2019t fully match their needs.<\/p>\n<p>In those cases, I script my own logic.<\/p>\n<p>For instance, I might check if a user belongs to the external group by reading an LDAP attribute. If the attribute contains &#8216;external&#8217;, I return a true outcome.<\/p>\n<p>If not, the script returns false.<\/p>\n<p>Once I save the script in ForgeRock, I attach it to the authentication tree and link the outcomes accordingly.<\/p>\n<p>ForgeRock lets me stack multiple scripted nodes inside a tree, so I can design an authentication path that reacts to real-world user attributes.<\/p>\n<p>The more complex the requirement, the more useful ForgeRock scripting becomes.<\/p>\n<p>This flexibility is one of the reasons I enjoy working with ForgeRock.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"_Using_ForgeRock_Scripts_for_OAuth_Token_Modification_and_Claims\"><\/span>\u00a0Using ForgeRock Scripts for OAuth, Token Modification, and Claims<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>ForgeRock doesn\u2019t stop at authentication trees.<\/p>\n<p>I regularly write scripts for OAuth token modification, OIDC claim transformation, and access decisions.<\/p>\n<p>These scripts help me adjust tokens, enrich them with attributes, or filter out information based on the project rules.<\/p>\n<p>ForgeRock already includes many sample scripts, and I often use them as a reference before writing my own version.<\/p>\n<p><video class=\"\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"800\" height=\"auto\"><source loading=\"lazy\" class=\"lazy lazy-hidden lazy lazy-hidden lazy lazy-hidden\" data-lazy-type=\"video\" data-src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Scripted-Nodes.webm\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/ForgeRock-Scripted-Nodes.webm\" \/><\/video><\/p>\n<p>Whether I\u2019m modifying OAuth tokens or adding claims, ForgeRock gives me the full control I need to meet client-specific requirements.<\/p>\n<p>In ForgeRock Access Management, I often build custom authentication behavior using trees.<\/p>\n<p>While ForgeRock gives me plenty of built-in nodes, there are times when I need a node that doesn\u2019t exist.<\/p>\n<p>That\u2019s where the scripted decision node becomes powerful.<\/p>\n<p>I can create a script, assign it to the tree, and decide what the outcomes should be.<\/p>\n<p>Whenever I create a script in ForgeRock, I select whether the script is for client-side authentication, server-side authentication, config providers, or OAuth access.<\/p>\n<p>ForgeRock labels everything clearly, so once I pick the correct script type, I can attach it to the authentication tree and set outcomes like &#8216;true&#8217; or &#8216;false&#8217;.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Building_Customized_ForgeRock_Authentication_Nodes-2\"><\/span>Building Customized ForgeRock Authentication Nodes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sometimes a client uses multiple databases or older systems, and the default ForgeRock nodes don\u2019t fully match their needs.<\/p>\n<p>In those cases, I script my own logic.<\/p>\n<p>For instance, I might check if a user belongs to the external group by reading an LDAP attribute. If the attribute contains &#8216;external&#8217;, I return a true outcome.<\/p>\n<p>If not, the script returns false.<\/p>\n<p>Once I save the script in ForgeRock, I attach it to the authentication tree and link the outcomes accordingly.<\/p>\n<p>ForgeRock lets me stack multiple scripted nodes inside a tree, so I can design an authentication path that reacts to real-world user attributes.<\/p>\n<p>The more complex the requirement, the more useful ForgeRock scripting becomes.<\/p>\n<p>This flexibility is one of the reasons I enjoy working with ForgeRock.<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Using ForgeRock Scripts for OAuth, Token Modification, and Claims<\/strong><\/p>\n<p>ForgeRock doesn\u2019t stop at authentication trees.<\/p>\n<p>I regularly write scripts for OAuth token modification, OIDC claim transformation, and access decisions.<\/p>\n<p>These scripts help me adjust tokens, enrich them with attributes, or filter out information based on the project rules.<\/p>\n<p>ForgeRock already includes many sample scripts, and I often use them as a reference before writing my own version.<\/p>\n<p>Whether I\u2019m modifying OAuth tokens or adding claims, ForgeRock gives me the full control I need to meet client-specific requirements.[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_3,1_3,1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#064399&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_start=&#8221;#494fff&#8221; background_color_gradient_end=&#8221;#9ea6ff&#8221; background_color_gradient_type=&#8221;radial&#8221; background_color_gradient_direction_radial=&#8221;top left&#8221; background_color_gradient_start_position=&#8221;35%&#8221; background_color_gradient_end_position=&#8221;80%&#8221; transform_scale=&#8221;74%|71%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;-53px|-50px&#8221; transform_translate_linked=&#8221;off&#8221; link_option_url=&#8221;https:\/\/cloudfoundation.com\/datorama-training\/&#8221; link_option_url_new_window=&#8221;on&#8221;][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_image src=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/Untitled-11.png&#8221; title_text=&#8221;Untitled-11&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; transform_scale=&#8221;103%|103%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;11px|0px&#8221; transform_translate_linked=&#8221;off&#8221; custom_padding=&#8221;|88px||||&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Georgia|700|||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;23px&#8221; text_line_height=&#8221;1.3em&#8221; header_font=&#8221;Georgia|700|||||||&#8221; header_font_size=&#8221;19px&#8221; header_letter_spacing=&#8221;-1px&#8221; header_line_height=&#8221;1.2em&#8221; transform_scale=&#8221;171%|159%&#8221; transform_scale_linked=&#8221;off&#8221; transform_translate=&#8221;40px|44px&#8221; transform_translate_linked=&#8221;off&#8221; transform_origin=&#8221;70%|50%&#8221; z_index=&#8221;-161&#8243; width=&#8221;100%&#8221; custom_margin=&#8221;|-215px||||&#8221; custom_padding=&#8221;|0px||||&#8221; link_option_url=&#8221;https:\/\/cloudfoundation.com\/datorama-training\/&#8221; link_option_url_new_window=&#8221;on&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"ForgeRock_Course_Price\"><\/span><strong><span style=\"color: #ffffff;\">ForgeRock Course Price<\/span><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/cloudfoundation.com\/&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;Offer Price&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#0C71C3&#8243; button_bg_color=&#8221;#FFFFFF&#8221; button_font=&#8221;|700|||||||&#8221; transform_translate=&#8221;64px|65px&#8221; transform_translate_linked=&#8221;off&#8221;][\/et_pb_button][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221;][et_pb_image src=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2019\/06\/logo_resize_color.png&#8221; title_text=&#8221;logo_resize_color&#8221; _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; transform_translate=&#8221;-36px|0px&#8221; transform_translate_linked=&#8221;off&#8221; custom_margin=&#8221;|||178px||&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_team_member name=&#8221;Saniya&#8221; position=&#8221;Author&#8221; image_url=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/Saniya2.png&#8221; _builder_version=&#8221;4.9.7&#8243; header_level=&#8221;h5&#8243; header_font=&#8221;Titillium Web|700|||||||&#8221; body_font=&#8221;Titillium Web||||||||&#8221; body_font_size=&#8221;16&#8243;]<\/p>\n<h5>\u201cLife Is An Experiment In Which You May Fail Or Succeed. Explore More, Expect Least.\u201d<\/h5>\n<p>[\/et_pb_team_member][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Times New Roman||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;] ForgeRock Resource URL Setup When I [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":107301,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"2880","footnotes":""},"categories":[228],"tags":[],"class_list":{"0":"post-107284","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-forgerock"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ForgeRock Policy and Scripting Training<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ForgeRock Policy and Scripting Training\" \/>\n<meta property=\"og:description\" content=\"[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Times New Roman||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;] ForgeRock Resource URL Setup When I [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudFoundation | Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-12T11:52:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T12:15:25+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/forgerock-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"NAGENDRAG\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"NAGENDRAG\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ForgeRock Policy and Scripting Training","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/","og_locale":"en_US","og_type":"article","og_title":"ForgeRock Policy and Scripting Training","og_description":"[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Times New Roman||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;] ForgeRock Resource URL Setup When I [&hellip;]","og_url":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/","og_site_name":"CloudFoundation | Blog","article_published_time":"2025-12-12T11:52:28+00:00","article_modified_time":"2025-12-12T12:15:25+00:00","og_image":[{"width":500,"height":500,"url":"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/forgerock-1.jpg","type":"image\/jpeg"}],"author":"NAGENDRAG","twitter_card":"summary_large_image","twitter_misc":{"Written by":"NAGENDRAG","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/","url":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/","name":"ForgeRock Policy and Scripting Training","isPartOf":{"@id":"https:\/\/cloudfoundation.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#primaryimage"},"image":{"@id":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#primaryimage"},"thumbnailUrl":"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/forgerock-1.jpg","datePublished":"2025-12-12T11:52:28+00:00","dateModified":"2025-12-12T12:15:25+00:00","author":{"@id":"https:\/\/cloudfoundation.com\/blog\/#\/schema\/person\/df6c7eba98f1bb15f2a100a9958266e4"},"breadcrumb":{"@id":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#primaryimage","url":"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/forgerock-1.jpg","contentUrl":"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2025\/12\/forgerock-1.jpg","width":500,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/cloudfoundation.com\/blog\/forgerock-policy-and-scripting-training\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudfoundation.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ForgeRock Policy and Scripting Training"}]},{"@type":"WebSite","@id":"https:\/\/cloudfoundation.com\/blog\/#website","url":"https:\/\/cloudfoundation.com\/blog\/","name":"CloudFoundation | Blog","description":"A New way of Learning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudfoundation.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/cloudfoundation.com\/blog\/#\/schema\/person\/df6c7eba98f1bb15f2a100a9958266e4","name":"NAGENDRAG","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudfoundation.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/09e08ba1102807a876f2c00245d6b955f0a9f027b40c181e9cee0cd2d927f84a?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09e08ba1102807a876f2c00245d6b955f0a9f027b40c181e9cee0cd2d927f84a?s=96&d=wavatar&r=g","caption":"NAGENDRAG"},"url":"https:\/\/cloudfoundation.com\/blog\/author\/nagendrag\/"}]}},"_links":{"self":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts\/107284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/comments?post=107284"}],"version-history":[{"count":7,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts\/107284\/revisions"}],"predecessor-version":[{"id":107302,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts\/107284\/revisions\/107302"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/media\/107301"}],"wp:attachment":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/media?parent=107284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/categories?post=107284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/tags?post=107284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}