1"use strict";(self.webpackChunkAuthressKnowledgeBase=self.webpackChunkAuthressKnowledgeBase||[]).push([[6411],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var i=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=i.createContext({}),p=function(e){var t=i.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=p(e.components);return i.createElement(c.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=p(n),d=r,g=h["".concat(c,".").concat(d)]||h[d]||l[d]||o;return n?i.createElement(g,a(a({ref:t},u),{},{components:n})):i.createElement(g,a({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,a=new Array(o);a[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,a[1]=s;for(var p=2;p<o;p++)a[p]=n[p];return i.createElement.apply(null,a)}return i.createElement.apply(null,n)}h.displayName="MDXCreateElement"},9321:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var i=n(87462),r=(n(67294),n(3905));const o={sidebar_label:"Microsoft Entra/Azure AD",title:"Setup user authentication using Microsoft Entra",description:"This article provides a quick start guide for integrating Entra (Azure Active Directory) identity provider connection into Authress so that your users can log in with their AD account.",image:"./assets/oauth-logo.png",image_alt:"Integrating applications with Microsoft AD, Entra",category:"Technical help"},a=void 0,s={unversionedId:"authentication/connecting-providers-idp/setup-azure-ad-connection",id:"authentication/connecting-providers-idp/setup-azure-ad-connection",title:"Setup user authentication using Microsoft Entra",description:"This article provides a quick start guide for integrating Entra (Azure Active Directory) identity provider connection into Authress so that your users can log in with their AD account.",source:"@site/docs/03-authentication/10-connecting-providers-idp/40-setup-azure-ad-connection.md",sourceDirName:"03-authentication/10-connecting-providers-idp",slug:"/authentication/connecting-providers-idp/setup-azure-ad-connection",permalink:"/knowledge-base/docs/authentication/connecting-providers-idp/setup-azure-ad-connection",draft:!1,editUrl:"https://gitlab.com/rhosys/authress-public-kb/knowledge-base/-/blob/main/docs/03-authentication/10-connecting-providers-idp/40-setup-azure-ad-connection.md",tags:[],version:"current",lastUpdatedAt:1772377859,formattedLastUpdatedAt:"Mar 1, 2026",sidebarPosition:40,frontMatter:{sidebar_label:"Microsoft Entra/Azure AD",title:"Setup user authentication using Microsoft Entra",description:"This article provides a quick start guide for integrating Entra (Azure Active Directory) identity provider connection into Authress so that your users can log in with their AD account.",image:"./assets/oauth-logo.png",image_alt:"Integrating applications with Microsoft AD, Entra",category:"Technical help"},sidebar:"tutorialSidebar",previous:{title:"Google Login",permalink:"/knowledge-base/docs/authentication/connecting-providers-idp/setup-google-login"},next:{title:"Salesforce Connected Apps",permalink:"/knowledge-base/docs/authentication/connecting-providers-idp/setup-salesforce-connected-apps"}},c={image:n(86979).Z},p=[{value:"Prerequisite: Azure Development Account",id:"prerequisite-azure-development-account",level:2},{value:"Authress Connection configuration",id:"authress-connection-configuration",level:2},{value:"Azure App Registration",id:"azure-app-registration",level:2},{value:"App Client Configuration",id:"app-client-configuration",level:2},{value:"App Client Secret",id:"app-client-secret",level:2},{value:"Validate the configuration",id:"validate-the-configuration",level:2},{value:"Optional Verifying your publisher ownership",id:"optional-verifying-your-publisher-ownership",level:2}],u={toc:p};
1function l(e){let{components:t,...o}=e;return(0,r.kt)("wrapper",(0,i.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This article provides a quick start guide for adding Microsoft Login to Authress. This enables your users to login using Azure AD (Entra), Outlook, Microsoft AD, MS Live, XBox, and any other Microsoft corporate identity provider and authenticate into your software."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you are looking to enable admin login access into the Authress Management Portal using your corporate IdP see the ",(0,r.kt)("a",{parentName:"p",href:"https://authress.io/app/#/setup?focus=general&tab=sso"},"Authress Management Portal SSO Configuration"),".")),(0,r.kt)("p",null,"In this guide we\u2019ll set up Microsoft login. the Login with Microsoft OAuth configuration is in Azure. Setting up authentication requires the following parts:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Authress-Microsoft OAuth configuration"),(0,r.kt)("li",{parentName:"ol"},"Azure Marketplace App Registration"),(0,r.kt)("li",{parentName:"ol"},"Testing the configuration")),(0,r.kt)("h2",{id:"prerequisite-azure-development-account"},"Prerequisite: Azure Development Account"),(0,r.kt)("p",null,"In order to enable your users to log in with Microsoft AD, Outlook, or any of the above listed providers, you will need an Azure developer account. You can do that by ",(0,r.kt)("a",{parentName:"p",href:"https://azure.microsoft.com/en-us/get-started/azure-portal/"},"Registering for an Azure account"),"."),(0,r.kt)("h2",{id:"authress-connection-configuration"},"Authress Connection configuration"),(0,r.kt)("p",null,"The first step is enabling the Microsoft preconfigured Authress connection in the Authress Management Portal."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Authress preconfigured microsoft connection",src:n(68967).Z,width:"353",height:"145"})),(0,r.kt)("p",null,"You will see there are the missing fields ",(0,r.kt)("inlineCode",{parentName:"p"},"Client ID")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Client Secret"),", first we are going to get the ",(0,r.kt)("inlineCode",{parentName:"p"},"Client ID"),"."),(0,r.kt)("h2",{id:"azure-app-registration"},"Azure App Registration"),(0,r.kt)("p",null,"Now we can create a new App Registration. This App Registration is what your users will see when the choose to sign in with Microsoft."),(0,r.kt)("p",null,"Navigate to the Azure Portal and choose to create a new App Registration. Click ",(0,r.kt)("strong",{parentName:"p"},"App registrations")," > then click ",(0,r.kt)("strong",{parentName:"p"},"New registration.")),(0,r.kt)("p",null,"Or click here: ",(0,r.kt)("a",{parentName:"p",href:"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/CreateApplicationBlade/quickStartType~/null/isMSAApp~/false"},"Create App registration")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Azure App registration",src:n(13962).Z,width:"1814",height:"413"})),(0,r.kt)("p",null,"Enter a ",(0,r.kt)("inlineCode",{parentName:"p"},"Name")," and make sure to select the appropriate ",(0,r.kt)("inlineCode",{parentName:"p"},"Supported account types"),". Authress recommends:"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Accounts in any organizational directory (Any Entra/Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"App Registration type selection",src:n(15360).Z,width:"894",height:"453"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Set the ",(0,r.kt)("inlineCode",{parentName:"li"},"Redirect URI")," to be your ",(0,r.kt)("a",{parentName:"li",href:"https://authress.io/app/#/settings?focus=domain"},"Authress Custom Domain url"),". This is the domain you set up in your Authress account. We'll assume for this example it is ",(0,r.kt)("inlineCode",{parentName:"li"},"https://auth.yourdomain.com")," and therefore the redirect URI is ",(0,r.kt)("inlineCode",{parentName:"li"},"https://auth.yourdomain.com/login"),". And then click ",(0,r.kt)("strong",{parentName:"li"},"Register"),". This value is available in your new Authress Connection for Microsoft in the ",(0,r.kt)("inlineCode",{parentName:"li"},"Complete Setup")," section of the connection.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Complete Authress Setup",src:n(56627).Z,width:"652",height:"317"})),(0,r.kt)("p",null,"And then copy this value to the App Registration in Azure:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Azure App redirect URI",src:n(71284).Z,width:"850",height:"174"})),(0,r.kt)("h2",{id:"app-client-configuration"},"App Client Configuration"),(0,r.kt)("p",null,"Now that the App is created in Azure we can copy the ",(0,r.kt)("inlineCode",{parentName:"p"},"Client ID")," from the portal and store it in Authress:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Azure app registration client ID",src:n(21189).Z,width:"526",height:"182"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Authress Client ID",src:n(33567).Z,width:"594",height:"474"})),(0,r.kt)("h2",{id:"app-client-secret"},"App Client Secret"),(0,r.kt)("p",null,"The next step is to generate the App Client Secret. To do that click ",(0,r.kt)("inlineCode",{parentName:"p"},"Add a certificate or secret")," in the Azure Portal (If you have already done this the hyperlink may say ",(0,r.kt)("inlineCode",{parentName:"p"},"0 certificate, N secret"),", click that instead.):"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Azure generate client secret",src:n(36710).Z,width:"1206",height:"187"})),(0,r.kt)("p",null,"Then click ",(0,r.kt)("inlineCode",{parentName:"p"},"New client secret"),", enter a useful description and an Expiry date, and then copy the ",(0,r.kt)("inlineCode",{parentName:"p"},"Secret Value")," (",(0,r.kt)("strong",{parentName:"p"},"not the secret ID"),") back to the Authress Connection:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Azure app client secret",src:n(90118).Z,width:"638",height:"272"})),(0,r.kt)("p",null,"One interesting thing to note is that the these secrets have a max expiry date two years in the future. However, this validation is only present in the UI, the API actually supports significantly longer. Since Authress will inform you if you need to rotate this secret, requesting a longer expiry, often provides a more robust experience for your users, since you won't have to set yourself a reminder to rotate the secret every two years."),(0,r.kt)("h2",{id:"validate-the-configuration"},"Validate the configuration"),(0,r.kt)("p",null,"Now the setup is complete and
1you are ready to test connection. You can test the connection in the Authress Connection configuration by clicking ",(0,r.kt)("inlineCode",{parentName:"p"},"Test Connection"),":"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Test Connection in Authress",src:n(84721).Z,width:"604",height:"277"})),(0,r.kt)("p",null,"When everything is configured correctly you'll see the test login success screen:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Correct Azure configuration in Authress",src:n(78817).Z,width:"917",height:"248"})),(0,r.kt)("h2",{id:"optional-verifying-your-publisher-ownership"},"[Optional]"," Verifying your publisher ownership"),(0,r.kt)("p",null,"Microsoft has one last optional step that you can take later to create an Microsoft Partner Network Publisher that can be attached to your Azure AD (Entra) registration. The details of doing this are available in the ",(0,r.kt)("a",{parentName:"p",href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/mark-app-as-publisher-verified"},"MPN publishing setup guide")," in the Azure documentation."))}l.isMDXComponent=!0},21189:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/app-client-id-6456c3392b75eb0eea6fe0abf26a53ed.png"},15360:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/app-registration-type-14a5ceba97d0bcdf51c9791aa12e4ccf.png"},13962:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/app-registration-beb78c797de86ba0bd7209b9dac5726a.png"},33567:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/authress-client-id-56f406c24376c8e35fbae73b51006003.png"},90118:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/client-secret-de6f49e61e930b29dde37c001c3dcdca.png"},56627:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/complete-setup-bb540971c3be71ceb2e11788c33e6425.png"},36710:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/generate-client-secret-7fd6d99ab047075310fa58abed612831.png"},68967:(e,t,n)=>{n.d(t,{Z:()=>i});const i="data:image/png;base64,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"},71284:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/redirect-url-ce825dc233caed707ab3a25e62fff537.png"},78817:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/test-connection-success-58ef241b7a250c25b651f65986fbdbc4.png"},84721:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/test-connection-7824bfd783d42c65641901c3737113a7.png"},86979:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/oauth-logo-49229b9116a2a590aaf2ae46564f8de8.png"}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.