{"id":13790072,"url":"https://github.com/davidjrh/dnn.azureadprovider","last_synced_at":"2025-10-02T03:00:10.699Z","repository":{"id":33792362,"uuid":"37481831","full_name":"davidjrh/dnn.azureadprovider","owner":"davidjrh","description":"The DNN Azure Active Directory Provider is an Authentication provider for DNN Platform (formerly DotNetNuke) that uses Azure Active Directory OAuth2 authentication to authenticate users.","archived":false,"fork":false,"pushed_at":"2025-06-16T16:38:19.000Z","size":4165,"stargazers_count":36,"open_issues_count":26,"forks_count":23,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-06-16T17:42:41.853Z","etag":null,"topics":["active-directory","azure","azuread","dnn","dnn-azure","dnn-platform","dnncms"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidjrh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-06-15T18:02:54.000Z","updated_at":"2025-05-08T16:07:59.000Z","dependencies_parsed_at":"2024-11-18T04:33:18.036Z","dependency_job_id":"3350cf95-315c-4519-8219-2f3743138c9e","html_url":"https://github.com/davidjrh/dnn.azureadprovider","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/davidjrh/dnn.azureadprovider","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidjrh%2Fdnn.azureadprovider","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidjrh%2Fdnn.azureadprovider/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidjrh%2Fdnn.azureadprovider/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidjrh%2Fdnn.azureadprovider/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidjrh","download_url":"https://codeload.github.com/davidjrh/dnn.azureadprovider/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidjrh%2Fdnn.azureadprovider/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277947270,"owners_count":25903929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-02T02:00:08.890Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["active-directory","azure","azuread","dnn","dnn-azure","dnn-platform","dnncms"],"created_at":"2024-08-03T22:00:36.632Z","updated_at":"2025-10-02T03:00:10.599Z","avatar_url":"https://github.com/davidjrh.png","language":"C#","funding_links":[],"categories":["Awesome DNN (DotNetNuke) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)"],"sub_categories":["Open Source Modules"],"readme":"# DNN Azure Active Directory provider\n[![Latest release](docs/images/DNNAzureAD_LatestRelease.svg)](https://github.com/davidjrh/dnn.azureadprovider/releases/latest) [![Build Status](https://intelequia.visualstudio.com/intelequia/_apis/build/status/Dnn.AzureADProvider-CI?branchName=master)](https://intelequia.visualstudio.com/Intelequia/_build?definitionId=54)\n\n**Looking for the DNN Azure AD B2C provider? Go to https://github.com/intelequia/dnn.azureadb2cprovider**\n\n## Contents\n- [Overview](#overview)\n- [Requirements](#requirements)\n- [Installation and configuration guide](#installation-and-configuration-guide)\n  - [Azure Active Directory setup](#AAD-setup)\n  - [DNN Provider installation and configuration](#provider-configuration)\n  - [Claim mappings](docs/mappings.md)\n- [Building the solution](#building-the-solution)\n  - [Requirements](#requirements-1)\n  - [Install package dependencies](#install-package-dependencies)\n  - [Debug the client side app](#debug-the-client-side-app)\n  - [Build the module](#build-the-module)\n- [References](#references)\n\n\u003ca name=\"overview\"\u003e\u003c/a\u003e\n## Overview\nThe DNN Azure Active Directory Provider is an Authentication provider for DNN Platform that uses Azure Active Directory OAuth2 authentication to authenticate users.\n\n![DNNAzureADv4_1](https://github.com/davidjrh/dnn.azureadprovider/raw/master/docs/images/DNNAzureADv4_1.png \"Sign-in with Azure AD\")\n\n![DNNAzureADv4_2](https://github.com/davidjrh/dnn.azureadprovider/raw/master/docs/images/DNNAzureADv4_2.png \"Sign-in with Azure AD\")\n\n![DNNAzureADv4_3](https://github.com/davidjrh/dnn.azureadprovider/raw/master/docs/images/DNNAzureADv4_3.png \"Sign-in with Azure AD\")\n\n\u003ca name=\"requirements\"\u003e\u003c/a\u003e\n## Requirements\n* **DNN Platform 9.4.3 or later**\n\n\u003ca name=\"installation-and-configuration-guide\"\u003e\u003c/a\u003e\n## Installation and configuration guide\nThis guide has two parts:\n* How to setup Azure Active Directory\n* How to install the authorization provider in our DNN deployment and how to setup the AD parameters we created before\n\nFollowing this two steps, you will give access to all your Azure AD users to register and sign-in into your DNN application. You can go later and harden your security settings like only allow to access the DNN Web Application to certain users on the Azure portal. Also note that depending on whether you have \"Public\" or \"Private\" user account registration on your DNN portal, you will need to approve the registered user before allowing him to access the site.\n\n\u003ca name=\"AAD-setup\"\u003e\u003c/a\u003e\n### Azure Active Directory setup\nTo support the role and profile synchronization by internally using the Microsoft Graph API, a service principal is needed to call the API. To setup the service principal:\n\n1. Go to https://portal.azure.com to setup the required applications on your Azure Active Directory. You need to use the user credentials of a user with at least \"Service Admin\" role. \n2. In the left-hand navigation pane, click the Azure Active Directory service, click **App registrations**, and click **New  registration**.\n3. When the **Create** page appears, enter your application's registration information:\n    * **Name**: Enter a meaningful application name. This can be any name you want and is simply how you will identify the application in your Azure Active Directory (i.e. \"My DNN Web Application\").\n    * **Supported account types**: select the supported account type, typically the first option (Single tenant). If you want to support users from multiple tenants, choose the second option \"Multitenant\", and if you desire to support Microsoft accounts choose any of the other options.\n    * **Redirect URI**: This is the URL where user can sign in and use your app. In a typical DNN site, this should be something like \"http://mysite.com/Login\". You can change this URL later.\n4. \u003ca name=\"applicationid\"\u003e\u003c/a\u003e When finished, click **Create**. Azure AD assigns a unique **Application ID** to your application, and you're taken to your application's main registration page.\n5. Click on the name of the app we've just created and then on \"All settings\" \u003e \"API permissions\" \u003e \"Microsoft Graph\". Ensure that the app has, at least the following API Permissions over the MS Graph API:\n    * Delegated\n        * offline_access\n        * openid    \n    * Application\n        * Application.Read.All\n        * Group.Read.All\n        * GroupMember.Read.All\n        * User.Read.All   \n\n6. Click on the **Grant permissions** button and then click on \"Yes\" to grant the permissions in all the accounts in the current directory.\n7. \u003ca name=\"getaadkey\"\u003e\u003c/a\u003e Now on the **Settings** page, under the **keys** section, create a new key with the desired expiration. Click on Save and then copy the key to a secure location. `IMPORTANT: you won't be able to copy this key later, so copy it now or generate a new one when needed.`\n\n\u003ca name=\"provider-configuration\"\u003e\u003c/a\u003e\n### DNN provider installation and configuration\nIt's important to remember that you need a DNN deployment with **version 7.4.1 or later** for v1.0.1 and **version 9.0.0 or later** for v3.0 to continue. \n\n1. Download the DNN Azure AD provider from the Releases folder (i.e. AzureADProvider_03.00.00_Install.zip) https://github.com/davidjrh/dnn.azureadprovider/releases\n2. Login into your DNN Platform website as a host user and install the provider from the \"Host \u003e Extensions\" page\n3. Use the **Install Extension Wizard** to upload and install the file you downloaded on step 1. Once installed, you can setup the provider from the new settings page, under the section **Azure Active Directory** on the Persona Bar:\n\n![DNNAzureADv4_4](https://github.com/davidjrh/dnn.azureadprovider/raw/master/docs/images/DNNAzureADv4_4.png \"AAD settings v4\")\n\nThe settings page is very straightforward. You only have to change four parameters to get the implementation to work:\n* **Tenant ID**: You can get this parameter from the **Overview** or the **Properties** section of your active directory. If you created the app registration as multitenant, type \"common\".\n* **App ID**: This is the **Application ID** of the application you created in [step 4](#applicationid) of the previous section of this guide.\n* **Secret**: This is the **Key** that you generated in [step 6](#getaadkey) of the previous section.\n* **Enabled**: Use this switch to enable the provider.\n\nAnd with that everything will be ready! For further configuration, you may check our wiki page.\n\n![DNNAzureADv4_settings_general](https://github.com/davidjrh/dnn.azureadprovider/raw/master/docs/images/DNNAzureADv4_settings_general.png \"AAD settings\")\n\n## Building the solution\n### Requirements\n* Visual Studio 2022 (download from https://www.visualstudio.com/downloads/)\n* npm package manager (download from https://www.npmjs.com/get-npm)\n\n### Install package dependencies\nFrom the comman line, enter the `\u003cRepoRoot\u003e\\DotNetNuke.Authentication.Azure\\AzureAD.Web` and run the following commands:\n```\n  npm install -g webpack\n  npm install -g webpack-cli\n  npm install -g webpack-dev-server --force\n  npm install --force\n```\n\n### Debug the client side app\nTo debug the client side, build the module in debug mode and copy the .dll and .pdb files into your site /bin folder (you can tweak the post build event for such purpose). That will try to load the persona bar bundle script from https://localhost:8080. \n\nThe second step is to start the local webpack dev server. To do it, \nFrom the command line, enter the `\u003cRepoRoot\u003e\\DotNetNuke.Authentication.Azure\\AzureAD.Web` and run the following commands:\n```\n  webpack-dev-server\n```\n\n### Build the module\nNow you can build the solution by opening the DotNetNuke.Authentication.Azure.sln file on Visual Studio. Building the solution in \"Release\", will generate the React bundle and package it all together with the installation zip file, created under the \"\\releases\" folder.\n\nOn the Visual Studio output window you should see something like this:\n```\n1\u003e------ Rebuild All started: Project: DotNetNuke.Authentication.Azure, Configuration: Release Any CPU ------\n1\u003eC:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\MSBuild\\15.0\\Bin\\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3277: Found conflicts between different versions of \"Newtonsoft.Json\" that could not be resolved.  These reference conflicts are listed in the build log when log verbosity is set to detailed.\n1\u003e  DotNetNuke.Authentication.Azure -\u003e C:\\Dev\\dnn.azureadprovider\\DotNetNuke.Authentication.Azure\\bin\\DotNetNuke.Authentication.Azure.dll\n1\u003e  Hash: 96cf8fcd3ef2c4a72565\n1\u003e  Version: webpack 1.13.0\n1\u003e  Time: 4922ms\n1\u003e         Asset    Size  Chunks             Chunk Names\n1\u003e  bundle-en.js  345 kB       0  [emitted]  main\n1\u003e      + 43 hidden modules\n1\u003e  \n1\u003e  WARNING in bundle-en.js from UglifyJs\n1\u003e  Condition always false [./~/style-loader/addStyles.js:24,0]\n1\u003e  Dropping unreachable code [./~/style-loader/addStyles.js:25,0]\n1\u003e  Condition always true [./src/containers/Root.js:2,4]\n1\u003e  Dropping unreachable code [./src/containers/Root.js:5,4]\n1\u003e  Condition always false [./~/style-loader!./~/css-loader!./~/less-loader!./src/components/general/generalSettings.less:10,0]\n1\u003e  Dropping unreachable code [./~/style-loader!./~/css-loader!./~/less-loader!./src/components/general/generalSettings.less:12,0]\n1\u003e  Side effects in initialization of unused variable update [./~/style-loader!./~/css-loader!./~/less-loader!./src/components/general/generalSettings.less:7,0]\n1\u003e  Condition always false [./~/style-loader!./~/css-loader!./~/less-loader!./src/components/style.less:10,0]\n1\u003e  Dropping unreachable code [./~/style-loader!./~/css-loader!./~/less-loader!./src/components/style.less:12,0]\n1\u003e  Side effects in initialization of unused variable update [./~/style-loader!./~/css-loader!./~/less-loader!./src/components/style.less:7,0]\n========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========\n\n```\n\n\n## References\n* Azure Active Directory Part 2: Building Web Applications for Azure AD, Rick Rainey (http://justazure.com/azure-active-directory-part-2-building-web-applications-azure-ad/) \n* What exactly is the App ID URI when adding a new Azure AD Application? https://social.msdn.microsoft.com/Forums/en-US/1bab0034-d01e-431b-9562-b7e9d7b2a180/what-exactly-is-the-app-id-uri-when-adding-a-new-azure-ad-application?forum=WindowsAzureAD\n* Integrating applications with Azure Active Directory. https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidjrh%2Fdnn.azureadprovider","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidjrh%2Fdnn.azureadprovider","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidjrh%2Fdnn.azureadprovider/lists"}