<?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>authentication &#8211; JMartinez.tech</title>
	<atom:link href="https://jmartinez.tech/tag/authentication/feed/" rel="self" type="application/rss+xml" />
	<link>https://jmartinez.tech</link>
	<description>Tech stuff, but chill.</description>
	<lastBuildDate>Tue, 24 Jun 2025 16:22:46 +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>authentication &#8211; JMartinez.tech</title>
	<link>https://jmartinez.tech</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>
	</channel>
</rss>
