<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JMartinez.tech</title>
	<atom:link href="https://jmartinez.tech/feed/" rel="self" type="application/rss+xml" />
	<link>https://jmartinez.tech</link>
	<description>Tech stuff, but chill.</description>
	<lastBuildDate>Tue, 03 Mar 2026 09:31:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://jmartinez.tech/wp-content/uploads/2025/04/T027K0ZC9-U03JL4E79KM-bbe3a34946fe-512-150x150.png</url>
	<title>JMartinez.tech</title>
	<link>https://jmartinez.tech</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>I’ve Stepped into the World of Okta Workflows</title>
		<link>https://jmartinez.tech/ive-stepped-into-the-world-of-okta-workflows/</link>
					<comments>https://jmartinez.tech/ive-stepped-into-the-world-of-okta-workflows/#respond</comments>
		
		<dc:creator><![CDATA[Jordi Martinez-Hidalgo]]></dc:creator>
		<pubDate>Mon, 02 Mar 2026 22:37:22 +0000</pubDate>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[itengineer]]></category>
		<category><![CDATA[okta]]></category>
		<category><![CDATA[oktaworkflow]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://jmartinez.tech/?p=481</guid>

					<description><![CDATA[Yes! Every Systems Engineer, DevOps engineer, IT Technician (or whatever new title the industry invents next) eventually reaches a point where their job goes far beyond building secure bridges and centralized authentication systems. Soon enough, problems from beyond the Shire start knocking at your door. License management, notifications, provisioning without ... <div><a class="more-link bs-book_btn" href="https://jmartinez.tech/ive-stepped-into-the-world-of-okta-workflows/">Read More</a></div>]]></description>
										<content:encoded><![CDATA[
<div class="posts-view">



<p style="font-size:16px">Yes! Every Systems Engineer, DevOps engineer, IT Technician (or whatever new title the industry invents next) eventually reaches a point where their job goes far beyond building secure bridges and centralized authentication systems.</p>



<p style="font-size:16px">Soon enough, problems from <em>beyond the Shire</em> start knocking at your door.</p>



<p style="font-size:16px">License management, notifications, provisioning without SCIM, database cleanup… the limit is basically whatever challenges you decide to tackle.</p>



<p style="font-size:16px">In this article, I’ll explain how <strong>Okta Workflows</strong> helped me solve real operational challenges, and how it can help you do the same.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Let Me Ask You Two Questions</strong></p>



<p style="font-size:16px">Have you ever wondered:</p>



<ul class="wp-block-list">
<li style="font-size:16px">How can I optimize licenses for SaaS applications and make sure users are actually using them?</li>



<li style="font-size:16px">How can I clean thousands of deactivated users from endless databases?</li>
</ul>



<p style="font-size:16px">These were recurring problems in my environment, and I chose <strong>Okta Workflows</strong> as the platform to solve them.</p>



<p style="font-size:16px">But first things first.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f928.png" alt="🤨" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>What Is Okta Workflows?</strong></p>



<p style="font-size:16px"><strong>Okta Workflows</strong> is a no-code automation platform provided by Okta that allows you to build automated processes both inside and outside the Okta ecosystem.</p>



<p style="font-size:16px">You might be thinking:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p style="font-size:16px">“Okay, but how can Okta Workflows actually help me?”</p>
</blockquote>



<p style="font-size:16px">Chances are, after reading this, you’ll either discover automation needs you didn’t know you had or realize how many repetitive tasks you can eliminate.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d7.png" alt="📗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Classic Example</strong></p>



<p style="font-size:16px">A typical onboarding automation might look like this:</p>



<p style="font-size:16px"><strong>New employee created in Okta →</strong></p>



<ul class="wp-block-list">
<li style="font-size:16px">Assign Slack or Microsoft Teams channels</li>



<li style="font-size:16px">Add required Google Groups</li>



<li style="font-size:16px">Send welcome email</li>



<li style="font-size:16px">Notify IT and HR internally</li>
</ul>



<p style="font-size:16px">The result?</p>



<p style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Reduced manual work<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Improved security<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Fewer human errors</p>



<p style="font-size:16px">Now that we understand what Okta Workflows can do, let’s look at how I solved two real-world challenges.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:26px">1&#x20e3;<strong>License Management Optimization</strong></p>



<p style="font-size:16px">If you manage SaaS platforms, you’ve probably faced this question:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p style="font-size:16px">&#8220;How do we stop paying for unused licenses?&#8221;</p>
</blockquote>



<p style="font-size:16px">Users request access to applications, use them for a while… and then abandon them. Their accounts remain inactive, basically as useful as a fax machine in 2026.</p>



<p style="font-size:16px">The result?</p>



<p style="font-size:16px">You end up paying €50,000 for 1,000 licenses when only 70% of users are actually active.</p>



<p style="font-size:16px">That’s a lot of wasted budget.<br><br>Most SaaS platforms don’t provide native mechanisms to automatically revoke licenses from inactive users.<br>This is where Okta Workflows becomes extremely powerful.</p>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f48a.png" alt="💊" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Important Consideration: Login Sessions</strong></p>



<p style="font-size:16px">If your application is integrated with Okta and uses enforced SSO, you can track login activity through Okta System Logs.</p>



<p style="font-size:16px">However — <strong>be careful</strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6a8.png" alt="🚨" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p style="font-size:16px">Browser session tokens may allow users to access apps without authenticating again for long periods.</p>



<p style="font-size:16px">If possible, adjust the application&#8217;s session expiration settings to a reasonable timeframe. Once this is configured correctly, your login logs become reliable data sources.</p>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e7.png" alt="🏧" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Automation Strategy</strong></p>



<p style="font-size:16px">Here was my approach:</p>



<p style="font-size:16px"><strong>Every day at 9:00 AM CET</strong></p>



<ol class="wp-block-list">
<li style="font-size:16px">Review all licensed users.</li>



<li style="font-size:16px">Check login activity.</li>



<li style="font-size:16px">Identify users inactive for more than 30 days.</li>



<li style="font-size:16px">Remove their license, <strong>but</strong> keep viewer-level access.</li>
</ol>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c8.png" alt="📈" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Benefits</strong></p>



<p style="font-size:16px">This approach allows us to:</p>



<p style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Maintain a REAL list of active licensed users<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Pay only for what we actually use<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Preserve limited access for inactive users<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Reduce SaaS costs significantly</p>



<p style="font-size:16px">Applied across multiple high-cost applications, the savings become very noticeable.</p>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f477-1f3fc-200d-2642-fe0f.png" alt="👷🏼‍♂️" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Implementation in Okta Workflows</strong></p>



<p style="font-size:16px">Okta Workflows includes native connectors for many platforms like Figma, Jamf, Miro, Monday, Salesforce, Slack, Atlassian, and more.</p>



<p style="font-size:16px">And when a connector doesn’t exist, you can always call APIs directly.</p>



<p style="font-size:16px">In my case, I only needed the <strong>Okta connector</strong>, since logs and provisioning could be managed centrally.</p>



<p style="font-size:20px"><strong>Trigger Flow</strong></p>



<ul class="wp-block-list">
<li style="font-size:16px">Runs daily at <strong>9:00 AM CET</strong></li>



<li style="font-size:16px">Retrieves all users assigned to the licensed Okta group</li>



<li style="font-size:16px">Sends them to a helper flow</li>
</ul>



<p style="font-size:20px"><strong>Helper Flow</strong></p>



<ol class="wp-block-list">
<li style="font-size:16px">Receive users with metadata</li>



<li style="font-size:16px">Query Okta System Logs for latest <code>user.authentication</code> events</li>



<li style="font-size:16px">Filter users inactive for 30+ days</li>



<li style="font-size:16px">Move them from:
<ul class="wp-block-list">
<li>Licensed group → Unlicensed group</li>
</ul>
</li>



<li style="font-size:16px">Send Slack notification to administrators<br></li>
</ol>



<p style="font-size:16px">No deactivation occurs, only license updates. Flow completed.</p>



<p style="font-size:16px">The entire process now runs automatically in seconds and only requires occasional auditing.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:26px">2&#x20e3;<strong>Database Cleanup Automation</strong></p>



<p style="font-size:16px">Many organizations accumulate massive numbers of deactivated users.</p>



<p style="font-size:16px">They remain stored indefinitely:</p>



<ul class="wp-block-list">
<li style="font-size:16px">Occupying space</li>



<li style="font-size:16px">Complicating audits</li>



<li style="font-size:16px">And increasing operational noise</li>
</ul>



<p style="font-size:16px">Okta environments often contain deprovisioned users still associated with groups years later.</p>



<p style="font-size:16px">Here’s how I automated cleanup.</p>



<p style="font-size:20px"><strong>Trigger Flow</strong></p>



<ul class="wp-block-list">
<li style="font-size:16px">Runs daily at <strong>9:00 AM CET</strong></li>



<li style="font-size:16px">Retrieves users with <strong>DEPROVISIONED</strong> status</li>



<li style="font-size:16px">Sends them to helper flow</li>
</ul>



<p style="font-size:20px"><strong>Helper Flow</strong></p>



<ol class="wp-block-list">
<li style="font-size:16px">Receive users and metadata</li>



<li style="font-size:16px">Capture current execution date</li>



<li style="font-size:16px">Calculate time difference since deprovisioning</li>



<li style="font-size:16px">Filter users inactive for more than <em>X</em> days</li>



<li style="font-size:16px">Permanently delete qualifying users</li>



<li style="font-size:16px">Notify stakeholders via Slack</li>
</ol>



<p style="font-size:16px">Simple, yes, but extremely effective.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f486-1f3fb-200d-2642-fe0f.png" alt="💆🏻‍♂️" class="wp-smiley" style="height: 1em; max-height: 1em;" />Final Thoughts</strong></p>



<p style="font-size:16px">Automations like these may seem small individually.</p>



<p style="font-size:16px">But combined, they create a strong, reliable, and scalable infrastructure that dramatically improves operational efficiency.</p>



<p style="font-size:16px">I’ll continue exploring new possibilities with <strong>Okta Workflows</strong>, and if you’ve made it this far, I highly recommend giving it a try if you haven’t already.</p>



<p style="font-size:16px">Thanks for reading!</p>



</div>
]]></content:encoded>
					
					<wfw:commentRss>https://jmartinez.tech/ive-stepped-into-the-world-of-okta-workflows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How I Would Recommend You Integrate an App with Okta</title>
		<link>https://jmartinez.tech/how-i-would-recommend-you-integrate-an-app-with-okta/</link>
					<comments>https://jmartinez.tech/how-i-would-recommend-you-integrate-an-app-with-okta/#comments</comments>
		
		<dc:creator><![CDATA[Jordi Martinez-Hidalgo]]></dc:creator>
		<pubDate>Tue, 24 Jun 2025 16:22:46 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[OIDC]]></category>
		<category><![CDATA[okta]]></category>
		<category><![CDATA[policies]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[SAML]]></category>
		<category><![CDATA[SCIM]]></category>
		<category><![CDATA[SSO]]></category>
		<category><![CDATA[SWA]]></category>
		<guid isPermaLink="false">https://jmartinez.tech/?p=342</guid>

					<description><![CDATA[This might be the article I’ve been most excited to write so far. Now we’re finally getting into the real stuff, and I have to admit, I’m genuinely hyped. I know, I know… I’m a geek 🤓 📌Before We Start Make sure to check out my previous article, especially if ... <div><a class="more-link bs-book_btn" href="https://jmartinez.tech/how-i-would-recommend-you-integrate-an-app-with-okta/">Read More</a></div>]]></description>
										<content:encoded><![CDATA[
<div class="posts-view">



<p style="font-size:16px">This might be the article I’ve been most excited to write so far. Now we’re finally getting into the real stuff, and I have to admit, I’m genuinely hyped. I know, I know… I’m a geek <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f913.png" alt="🤓" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Before We Start </strong></p>



<p style="font-size:16px">Make sure to check out<a href="https://jmartinez.tech/before-you-use-okta-do-this-an-essential-guide-for-admins/"> my previous article</a>, especially if your Okta environment is still a clean slate. You’ll need a few things already set up before diving into this one.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>I <s>Have To</s> Need to Integrate an App — How Do I Do It?</strong></p>



<p style="font-size:16px">Alright, let’s get into it. Before anything else, you need to understand what kind of integration is possible based on the protocol the app supports. These are the protocols you <strong>must</strong> know. Seriously, tattoo them on your brain if you have to:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>OIDC (OpenID Connect)</strong>: Built on OAuth 2.0. Let&#8217;s apps verify the user&#8217;s identity and securely retrieve user info.</li>



<li style="font-size:16px"><strong>SAML 2.0 (Security Assertion Markup Language)</strong>: XML-based protocol used to exchange authentication and authorization data between an IdP and a Service Provider (SP).</li>



<li style="font-size:16px"><strong>SWA (Secure Web Authentication)</strong>: A form of SSO where Okta injects credentials automatically into login forms. For apps that don’t support OIDC or SAML.</li>



<li style="font-size:16px"><strong>API Services (OAuth 2.0 / Token-Based Access)</strong>: Token-based API authentication, allowing apps to access resources on behalf of a user without exposing credentials.</li>
</ul>



<p style="font-size:16px">In this article, I’ll focus only on <strong>OIDC and SAML 2.0</strong>, the two most secure and widely used protocols.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>How OIDC Works, and When to Choose It</strong></p>



<p style="font-size:16px">OIDC is a <strong>modern authentication protocol</strong>, designed specifically for login flows. It’s perfect for modern web and mobile applications. It gives you structured token flows, signed payloads, and strong session management.</p>



<p style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You should choose OIDC if:</p>



<ul class="wp-block-list">
<li style="font-size:16px">The application <strong>natively supports OIDC</strong>.</li>



<li style="font-size:16px">You’re building your own <strong>web or mobile app</strong>.</li>



<li style="font-size:16px">You need something <strong>lightweight, modern, and dev-friendly</strong>.</li>



<li style="font-size:16px">You want <strong>fine-grained control</strong> over scopes, sessions, and claims.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How SAML 2.0 Works, and When to Choose It</strong></p>



<p style="font-size:16px">SAML 2.0 is a well-established standard, especially in enterprise environments. It may be older, but it’s <strong>rock-solid</strong> for corporate SSO and has amazing documentation and tooling.</p>



<p style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You should choose SAML 2.0 if:</p>



<ul class="wp-block-list">
<li style="font-size:16px">The app is <strong>enterprise-grade</strong>.</li>



<li style="font-size:16px">You want a <strong>combined integration with SCIM provisioning</strong> (big win).</li>



<li style="font-size:16px">You need <strong>XML-based authentication with certificate signing</strong>.</li>



<li style="font-size:16px">You want something <strong>mature, stable, and well-supported</strong>.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong>1&#x20e3; Case 1: Integrating My App Using OIDC</strong></p>



<p>So you’ve decided OIDC is the best fit. Great! Grab a coffee and let’s walk through the steps.</p>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Create the App in Okta</p>



<ul class="wp-block-list">
<li style="font-size:16px">Go to your <strong>Okta Admin Console</strong></li>



<li style="font-size:16px">Navigate to <strong>Applications > Applications</strong></li>



<li style="font-size:16px">Click <strong>Create App Integration</strong></li>



<li style="font-size:16px">Choose:
<ul class="wp-block-list">
<li><strong>Sign-in method</strong>: <code>OIDC - OpenID Connect</code></li>



<li><strong>Application type</strong>: <code>Web</code>, <code>Single-Page App</code>, or <code>Native</code> (depending on your app)</li>
</ul>
</li>



<li style="font-size:16px">Click <strong>Next</strong></li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="930" height="809" src="https://jmartinez.tech/wp-content/uploads/2025/06/Screenshot-2025-06-20-at-22.04.48.png" alt="" class="wp-image-347" style="width:350px" srcset="https://jmartinez.tech/wp-content/uploads/2025/06/Screenshot-2025-06-20-at-22.04.48.png 930w, https://jmartinez.tech/wp-content/uploads/2025/06/Screenshot-2025-06-20-at-22.04.48-300x261.png 300w, https://jmartinez.tech/wp-content/uploads/2025/06/Screenshot-2025-06-20-at-22.04.48-768x668.png 768w" sizes="(max-width: 930px) 100vw, 930px" /></figure>
</div>


<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Configure the App</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>App Name</strong>: Just a name to recognize the app.</li>



<li style="font-size:16px"><strong>Sign-in redirect URIs</strong>: Where users land after login. </li>



<li style="font-size:16px"><strong>Sign-out redirect URIs</strong> (optional): Personally, I avoid setting this unless necessary, as it can interfere with session management across apps.</li>
</ul>



<p style="font-size:16px">Once that’s done, take note of the following:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Client ID</strong></li>



<li style="font-size:16px"><strong>Client Secret</strong></li>



<li style="font-size:16px"><strong>Issuer URl / Authorization Server URL</strong></li>
</ul>



<p style="font-size:16px">Now, you’ll need to share this info with the service provider or implement it yourself if it’s your own app. But in this article, we’ll stay focused on the <strong>Okta side</strong>.</p>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f465.png" alt="👥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Assign Users to the App</p>



<ul class="wp-block-list">
<li style="font-size:16px">Go to the app in Okta</li>



<li style="font-size:16px">Open the <strong>Assignments</strong> tab</li>



<li style="font-size:16px">Assign <s>users</s> or groups (avoid assigning users, trust me)</li>
</ul>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Test the Authentication Flow</p>



<p style="font-size:16px">Always test the login flow end-to-end. I recommend using <strong>SP-Initiated Flow</strong> (more secure), though <strong>IdP-Initiated Flow</strong> is also possible.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong>2&#x20e3; Case 2: Integrating My App Using SAML 2.0</strong></p>



<p style="font-size:16px">More into the <strong>SAML 2.0</strong> route? Let’s get to it.</p>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Create the App in Okta</p>



<ul class="wp-block-list">
<li style="font-size:16px">Go to your <strong>Okta Admin Console</strong></li>



<li style="font-size:16px">Navigate to <strong>Applications > Applications</strong></li>



<li style="font-size:16px">Click <strong>Create App Integration</strong></li>



<li style="font-size:16px">Select:
<ul class="wp-block-list">
<li><strong>Sign-in method</strong>: <code>SAML 2.0</code></li>
</ul>
</li>



<li style="font-size:16px">Click <strong>Next</strong></li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="1886" height="1084" src="https://jmartinez.tech/wp-content/uploads/2025/06/image.png" alt="" class="wp-image-350" style="width:450px" srcset="https://jmartinez.tech/wp-content/uploads/2025/06/image.png 1886w, https://jmartinez.tech/wp-content/uploads/2025/06/image-300x172.png 300w, https://jmartinez.tech/wp-content/uploads/2025/06/image-1024x589.png 1024w, https://jmartinez.tech/wp-content/uploads/2025/06/image-768x441.png 768w, https://jmartinez.tech/wp-content/uploads/2025/06/image-1536x883.png 1536w" sizes="(max-width: 1886px) 100vw, 1886px" /></figure>
</div>


<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Configure the App</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>App Name</strong>: A name to identify the app.</li>



<li style="font-size:16px"><strong>Single sign-on URL (ACS URL)</strong>: The app endpoint where Okta sends the SAML response</li>



<li style="font-size:16px"><strong>Audience URI (Entity ID)</strong>: Unique identifier of the app</li>



<li style="font-size:16px"><strong>Name ID Format</strong>: Usually <code>EmailAddress</code></li>



<li style="font-size:16px"><strong>Application Username</strong>: How Okta sends the user (usually <code>Email</code> or <code>Okta Username</code>)</li>
</ul>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Map SAML Attributes (Optional)</p>



<p style="font-size:16px">You usually won’t need to change this unless your app expects specific attributes. If it does, you can map them here.</p>



<p style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6a8.png" alt="🚨" class="wp-smiley" style="height: 1em; max-height: 1em;" />Make sure to double-check this, incorrect attribute mapping is one of the most common reasons for failed SAML logins.</p>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2139.png" alt="ℹ" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Get the Okta Metadata</p>



<p style="font-size:16px">Once everything is saved, go to the <strong>Sign On</strong> tab and copy:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Identity Provider Single Sign-On URL</strong></li>



<li style="font-size:16px"><strong>Identity Provider Issuer</strong></li>



<li style="font-size:16px"><strong>X.509 Certificate</strong></li>
</ul>



<p style="font-size:16px">These values are needed to configure your app (Service Provider side) so it knows how to trust Okta.</p>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f465.png" alt="👥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Assign Users to the App</p>



<ul class="wp-block-list">
<li style="font-size:16px">Open the <strong>Assignments</strong> tab in the app</li>



<li style="font-size:16px">Assign <s>users</s> or groups</li>
</ul>



<p style="font-size:18px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Test the Login Flow</p>



<p style="font-size:16px">Just like with OIDC, I recommend starting with <strong>SP-Initiated Flow</strong> for more control.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong>✚ Extras You Should Consider</strong></p>



<p style="font-size:16px">These are basic setups to get authentication up and running. But the real power comes when you start adding more layers. Here are a few things I <strong>strongly</strong> recommend looking into:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Authentication policies</strong> (mandatory!)</li>



<li style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>SCIM or JIT provisioning</strong></li>



<li style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e4.png" alt="📤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Push groups</strong> (if your app supports them)</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f486-1f3fb-200d-2642-fe0f.png" alt="💆🏻‍♂️" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</strong></p>



<p style="font-size:16px">If you made it this far, thank you.<br>This stuff isn’t always easy, but it’s <strong>incredibly rewarding</strong> once you get it working.</p>



<p style="font-size:16px">Play around, break things, read docs (both official and unofficial), and keep improving your integration. And don’t stop there, enforce security policies, access controls, and build something <strong>robust, scalable, and secure</strong>.</p>



<p style="font-size:20px">Thanks for reading!</p>



</div>
]]></content:encoded>
					
					<wfw:commentRss>https://jmartinez.tech/how-i-would-recommend-you-integrate-an-app-with-okta/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Before You Use Okta, Do This: An Essential Guide for Admins</title>
		<link>https://jmartinez.tech/before-you-use-okta-do-this-an-essential-guide-for-admins/</link>
					<comments>https://jmartinez.tech/before-you-use-okta-do-this-an-essential-guide-for-admins/#comments</comments>
		
		<dc:creator><![CDATA[Jordi Martinez-Hidalgo]]></dc:creator>
		<pubDate>Thu, 12 Jun 2025 17:50:10 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[amateur]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[okta]]></category>
		<category><![CDATA[policies]]></category>
		<category><![CDATA[profile]]></category>
		<category><![CDATA[roles]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[SSO]]></category>
		<category><![CDATA[steps]]></category>
		<guid isPermaLink="false">https://jmartinez.tech/?p=337</guid>

					<description><![CDATA[You&#8217;ve just acquired Okta and have no idea where to start. You&#8217;re ready to roll up your sleeves and start integrating applications, but wait! Your tenant is empty. If you don’t lay down solid foundations, you might regret it later. Here’s what I would do if I had to start ... <div><a class="more-link bs-book_btn" href="https://jmartinez.tech/before-you-use-okta-do-this-an-essential-guide-for-admins/">Read More</a></div>]]></description>
										<content:encoded><![CDATA[
<div class="posts-view">



<p style="font-size:16px">You&#8217;ve just acquired Okta and have no idea where to start.</p>



<p style="font-size:16px">You&#8217;re ready to roll up your sleeves and start integrating applications, but wait! Your tenant is empty. If you don’t lay down solid foundations, you might regret it later.</p>



<p style="font-size:16px">Here’s what I would do if I had to start from scratch today:</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.png" alt="🧑‍🧑‍🧒‍🧒" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Make Sure You Have a Profile Source</strong></strong></p>



<p style="font-size:16px">Okta is a powerful tool, but it’s useless without users.</p>



<p style="font-size:16px">There are many ways to create users in Okta, but in my opinion, the most powerful one is connecting a <strong>Profile Source</strong>.</p>



<p style="font-size:16px">There are tons of available options: <strong>Workday</strong>, <strong>BambooHR</strong>, <strong>Active Directory</strong>, <strong>LDAP</strong>, <strong>UKG</strong>, and more.</p>



<p style="font-size:16px">Connecting a source of truth from your HR systems allows you to sync valuable information automatically. This data can be leveraged later for workflows, group assignments, and more.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p style="font-size:16px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Tip for smaller companies</strong>: You can also use <em>Okta Direct Input</em>. While it’s not ideal and I wouldn’t recommend it, it can work if you don’t have other options — but treat it as a last resort.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cd.png" alt="📍" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong><strong><strong>Map Every Attribute You Can</strong></strong></strong></p>



<p style="font-size:16px">Once your source is connected, it’s time to take full advantage of the incoming data.</p>



<p style="font-size:16px">Map <strong>every attribute you can</strong>, even if some seem irrelevant now. Trust me, you never know when you’ll need them.</p>



<p style="font-size:16px">Start with the essentials:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><code>team</code></li>



<li style="font-size:16px"><code>department</code></li>



<li style="font-size:16px"><code>location</code></li>



<li style="font-size:16px"><code>division</code></li>



<li style="font-size:16px"><code>manager</code></li>



<li style="font-size:16px"><code>office</code></li>
</ul>



<p style="font-size:16px">The more metadata you collect, the more powerful your automations and policies will be.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3d8.png" alt="🏘" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong><strong><strong>Create Dynamic Groups</strong></strong></strong></p>



<p style="font-size:16px">Now that you have user data, it’s time to put it to use.</p>



<p style="font-size:16px"><strong>Dynamic groups</strong> let you assign users automatically based on attribute-based rules. For example:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><code>HR Department</code></li>



<li style="font-size:16px"><code>Finance Team</code></li>



<li style="font-size:16px"><code>Barcelona Office</code></li>



<li style="font-size:16px"><code>US Employees</code></li>



<li style="font-size:16px"><code>IT Support</code></li>
</ul>



<p style="font-size:16px">You don’t need to manually manage membership. Any changes in your source of truth will be reflected in Okta, and users will move in and out of groups automatically based on the defined logic.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f46e-1f3fb.png" alt="👮🏻" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Define Access Roles</strong></p>



<p style="font-size:16px">You won’t be the only one managing Okta.</p>



<p style="font-size:16px">Set up access roles based on each person’s responsibilities:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Read-only Admin</strong></li>



<li style="font-size:16px"><strong>Group Membership Admin</strong></li>



<li style="font-size:16px"><strong>Application Admin</strong></li>



<li style="font-size:16px"><strong>Super Admin</strong> (only if absolutely necessary)</li>
</ul>



<p style="font-size:16px">This step takes a bit of time, but it&#8217;s worth it. Delegating access properly reduces risk and improves operational efficiency.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6aa.png" alt="🚪" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Define Authentication Policies</strong></p>



<p style="font-size:16px">Security should always be a top priority.</p>



<p style="font-size:16px">Set up <strong>authentication policies</strong> tailored to your applications. Not all apps are created equal, accessing <strong>Salesforce</strong> is not the same as accessing <strong>Udemy</strong>.</p>



<p style="font-size:16px">I recommend:</p>



<ul class="wp-block-list">
<li style="font-size:16px">Enforcing <strong>2FA</strong></li>



<li style="font-size:16px">Applying <strong>IP restrictions</strong></li>



<li style="font-size:16px">Restricting access by <strong>device</strong> (if capable)</li>
</ul>



<p style="font-size:16px">Be <strong>strict</strong>, especially with critical systems. Better safe than sorry.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d7.png" alt="📗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>In Summary</strong></p>



<p style="font-size:16px">These five steps will help you build a strong, reliable tenant, ready for growth, app integration, and secure daily operations.</p>



<p style="font-size:16px">As for app integration… we’ll save that for another post. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jmartinez.tech/before-you-use-okta-do-this-an-essential-guide-for-admins/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Implementing Zero Trust with Okta: Mistakes I Made and What I&#8217;d Do Differently</title>
		<link>https://jmartinez.tech/implementing-zero-trust-with-okta-mistakes-i-made-and-what-id-do-differently/</link>
					<comments>https://jmartinez.tech/implementing-zero-trust-with-okta-mistakes-i-made-and-what-id-do-differently/#comments</comments>
		
		<dc:creator><![CDATA[Jordi Martinez-Hidalgo]]></dc:creator>
		<pubDate>Sat, 24 May 2025 19:41:51 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[Identity]]></category>
		<category><![CDATA[okta]]></category>
		<category><![CDATA[SSO]]></category>
		<category><![CDATA[ZeroTrust]]></category>
		<guid isPermaLink="false">https://jmartinez.tech/?p=315</guid>

					<description><![CDATA[Let’s be honest — you really can’t trust anything on the network anymore. With remote work and everything moving to SaaS, we just can’t assume anything is safe &#8211; and to be fair, many times, we are the biggest threats to our systems. That’s when the world started turning to ... <div><a class="more-link bs-book_btn" href="https://jmartinez.tech/implementing-zero-trust-with-okta-mistakes-i-made-and-what-id-do-differently/">Read More</a></div>]]></description>
										<content:encoded><![CDATA[
<div class="posts-view">



<p style="font-size:16px">Let’s be honest — you really can’t trust anything on the network anymore.</p>



<p style="font-size:16px">With remote work and everything moving to SaaS, we just can’t assume anything is safe &#8211; and to be fair, many times, <strong>we are the biggest threats</strong> to our systems.</p>



<p style="font-size:16px">That’s when the world started turning to <strong>Zero Trust</strong>.<br>You’ve probably heard the phrase:</p>



<p style="font-size:16px">&#8220;<em>Never trust, always verify.&#8221;</em></p>



<p style="font-size:16px">Sounds great, right? But actually implementing it isn’t easy &#8211; and can be a real pain in the neck.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>So, what is Zero Trust really?</strong></p>



<p style="font-size:16px">It’s not a piece of software or a configuration setting. It’s more of a <strong>mindset</strong> &#8211; a different way of thinking about access and security. Something like:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Identity is everything.</strong> Doesn’t matter where you are &#8211; it matters <em>who</em> you are.</li>



<li style="font-size:16px"><strong>Access is earned, not assumed.</strong> Being &#8220;inside&#8221; doesn’t mean you’re in.</li>



<li style="font-size:16px"><strong>You only get what you need.</strong> No more blanket admin rights.</li>



<li style="font-size:16px"><strong>Logs are your best friend.</strong> Because if you’re not watching… someone else might be.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>What tools did we use?</strong></p>



<p style="font-size:16px">Here’s the stack we work with (and personally, it works pretty well for us so far):</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Okta</strong> for SSO, MFA, and everything related to identity</li>



<li style="font-size:16px"><strong>Google Workspace</strong> for team productivity and collaboration</li>



<li style="font-size:16px"><strong>Jamf + Intune</strong> to manage all our devices</li>



<li style="font-size:16px"><strong>Slack and Zoom</strong> for everything communication-related</li>



<li style="font-size:16px"><strong>Confluence</strong> to share knowledge and keep everyone in the loop</li>
</ul>



<p style="font-size:16px">All these tools are great &#8211; but the real challenge is <strong>knowing how to use them properly</strong>, and that, my friends, is not as easy as it sounds.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6ab.png" alt="🚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Mistakes we’ve made (okay… mostly me)</strong></p>



<ol class="wp-block-list">
<li style="font-size:16px"><strong>Thinking it was “just an IT project”</strong><br>I didn’t involve other teams that were going to be affected. And of course, nobody likes sudden login issues. Better security doesn’t mean people will automatically love the changes. </li>



<li style="font-size:16px"><strong>Being too generous with roles</strong><br>Giving people more access makes onboarding easier, sure. But later, figuring out who had access to what turned into a nightmare.</li>



<li style="font-size:16px"><strong>Believing the official guides would save me<br></strong>Not every Okta integration works as described. I had to contact our CSM, open support tickets, and sometimes just rely on good old trial and error.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f501.png" alt="🔁" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>What I’d do differently now that I know all this</strong></p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Talk to the team first.</strong> Explain the “why” before changing how they log in. Make sure everyone’s informed.</li>



<li style="font-size:16px"><strong>Plan roles properly.</strong> No improvisation &#8211; even if it takes more time, it’s worth it in the long run.</li>



<li style="font-size:16px"><strong>Document, document, and document.</strong> You never know who else will need it. That person might be you at 2 AM.</li>



<li style="font-size:16px"><strong>Accept this is a journey.</strong> It’s not a one-and-done. It needs care and maintenance, always.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Was it worth it?</strong></p>



<p style="font-size:16px">Absolutely!</p>



<p style="font-size:16px">We now have <strong>better visibility</strong>, a <strong>more serious onboarding/offboarding process</strong>, <strong>less reliance on VPNs or “internal trust”</strong>, and way <strong>more confidence</strong> when rolling out new tools.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<p style="font-size:24px"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6eb.png" alt="🛫" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>Thinking of starting this journey yourself?</strong></p>



<p style="font-size:16px">My advice? <strong>Start small.</strong> Focus on identity first. Pick one or two tools &#8211; and get them right.</p>



<p style="font-size:16px"><strong>Zero Trust</strong> sounds big and complicated, but it’s okay to take small steps. And more importantly, it’s okay to make mistakes. If you’re going in the right direction, those small wins will guide you forward.</p>



<p style="font-size:16px">And seriously… <strong>talk to people</strong>.<br>That might just be the most underrated part of doing IT right.</p>



</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jmartinez.tech/implementing-zero-trust-with-okta-mistakes-i-made-and-what-id-do-differently/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
