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

<channel>
	<title>Blog - Darius Liktorius</title>
	<atom:link href="http://www.liktorius.com/blog/feed/" rel="self" type="application/rss+xml"/>
	<link>https://www.liktorius.com/blog/</link>
	<description>My Thoughts on Technology and Business</description>
	<lastBuildDate>Sat, 06 Mar 2021 05:49:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.9</generator>
	<xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item>
		<title>Prevent Legacy Auth in Azure AD while satisfying Veeam VBO 365 and other apps</title>
		<link>https://www.liktorius.com/2019/07/17/prevent-azure-legacy-auth-for-veeam-vbo-365/</link>
					<comments>https://www.liktorius.com/2019/07/17/prevent-azure-legacy-auth-for-veeam-vbo-365/#disqus_thread</comments>
		
		<dc:creator><![CDATA[Darius Liktorius]]></dc:creator>
		<pubDate>Wed, 17 Jul 2019 20:12:18 +0000</pubDate>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office365]]></category>
		<guid isPermaLink="false">https://www.liktorius.com/?p=276</guid>

					<description><![CDATA[<p>Summary The purpose of this post is to describe a work-around to permit Veeam Backup for Microsoft Office 365 (VBO) &#8211; or any other apps which require it &#8211; to continue to use Legacy Authentication from a designated, trusted location, while forcing all other accounts to use Modern Authentication. Licensing Note: We will accomplish this &#8230; <a href="https://www.liktorius.com/2019/07/17/prevent-azure-legacy-auth-for-veeam-vbo-365/" class="more-link">Continue reading<span class="screen-reader-text"> "Prevent Legacy Auth in Azure AD while satisfying Veeam VBO 365 and other apps"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/07/17/prevent-azure-legacy-auth-for-veeam-vbo-365/">Prevent Legacy Auth in Azure AD while satisfying Veeam VBO 365 and other apps</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Summary</h1>
<p>The purpose of this post is to describe a work-around to permit Veeam Backup for Microsoft Office 365 (VBO) &#8211; or any other apps which require it &#8211; to continue to use Legacy Authentication from a designated, trusted location, while forcing all other accounts to use Modern Authentication.</p>
<pre><strong>Licensing Note</strong>: We will accomplish this using Azure AD Conditional Access (CA) policies.

CA policies require Azure AD Premium P1 or Azure AD Premium P2 licenses within your tenant, for your users.  Azure AD P1 and P2 are included in the Microsoft Enterprise Mobility + Security E3 (P1) and EMS E5 (P2) licenses, as well as Microsoft 365 E3 (P1) and Microsoft 365 E5 (P2) licenses.  Azure AD P1 or P2 are *not* included in Microsoft 365 Business.</pre>
<h1>Background</h1>
<p>A few months ago, <a href="https://forums.veeam.com/veeam-backup-for-microsoft-office-365-f47/current-version-is-1-0-0-860-ga-t39185.html#p218411" target="_blank" rel="noopener noreferrer">Veeam released Version 3 of its backup solution for Office 365</a> &#8211; Veeam Backup for Office 365 (a.k.a. &#8220;VBO&#8221;).  The long anticipated feature was VBO V3&#8217;s ability to make use of Modern Authentication within Azure Active Directory (Azure AD).  In theory, this would allow Legacy Authentication to be disabled and make it more secure.</p>
<p>Apparently, <a href="https://forums.veeam.com/veeam-backup-for-microsoft-office-365-f47/v3-legacyauthprotocolisenabled-still-required-t58480.html" target="_blank" rel="noopener noreferrer">Veeam Backup for Office 365 still requires Legacy Authentication</a> to be enabled in order to backup parts of SharePoint Online (SPO) as Microsoft has not provided (as of this writing) Modern Authentication capable API endpoints to do so.</p>
<h2>Modern Authentication</h2>
<p><a href="https://docs.microsoft.com/en-us/office365/enterprise/office-365-client-support-modern-authentication" target="_blank" rel="noopener noreferrer">Modern Authentication in Azure AD</a> enables your Azure AD tenant to utilize features like Multi-Factor Authentication (MFA) for client applications which support it.  It accomplishes this by presenting the client application with an <a href="https://www.oauth.com/oauth2-servers/access-tokens/" target="_blank" rel="noopener noreferrer">OAuth Token</a> it can use (and reuse) to access your Office 365 online application resources (e.g. Exchange Online).</p>
<p>If you have MFA enabled and have signed into Outlook 365 (2016+) on a desktop, or setup Outlook for Mobile, or even Apple Mail for iOS 11 (or later), you may have noticed the sign-in credentials prompt appears to be a web page presented within the application you are using.  This is because it actually <em>*is*</em> a web page, served up by Azure AD and Microsoft Online Services as you would see when you login with a browser.  This is done to support Azure AD MFA.</p>
<h2>Legacy Authentication</h2>
<p>Leaving Legacy Authentication enabled is a security risk because it allows users who have enabled &#8216;<a href="https://docs.microsoft.com/en-us/azure/active-directory/user-help/multi-factor-authentication-end-user-app-passwords" target="_blank" rel="noopener noreferrer">app passwords</a>&#8216; to bypass the MFA requirement while authenticating.  This exposes these accounts to potential unauthorized access.</p>
<p>While going through a security review on an Azure AD tenant, one of the recommended actions was to enable the new, Microsoft-provided Conditional Access policy named &#8216;<em>Baseline policy: Block legacy authentication (Preview)</em>&#8216;.</p>
<p>The purpose of this policy is to prevent/block legacy authentication sign-ins to Azure AD.  Examples are older versions of Outlook and other Office applications, as well as older mobile clients (e.g. the Mail app on iOS devices before iOS 11).</p>
<p>The problem with this baseline policy is it affects everyone within your Azure AD tenant, including the VBO backup account.  This would prevent VBO from fully backing up all of the meta data for SharePoint Online and other services.</p>
<h1>Disable or Prevent Legacy Auth?</h1>
<p>There are ways to Disable Legacy Authentication, they include changing access control settings within the SharePoint Admin portal, or PowerShell commands executed against your Azure AD tenant, but disabling Legacy Auth altogether would prevent VBO from properly and fully carrying out its job.</p>
<p>What if instead we <em>Prevent</em> (block) Legacy Auth for all user accounts <em>*except*</em> the VBO account (as it still requires it)?</p>
<h1>The Solution</h1>
<p>Instead of enabling the default baseline Conditional Access policy to block all users from being able to perform Legacy Authentication against an Azure AD tenant, let&#8217;s setup two (2) new CA policies to prevent all accounts except the VBO account from being able to perform Legacy Auth.</p>
<p>Before we create a any CA policies, if you have not already done so, we must define a Named Location to identify the authentication requests coming from the VBO account and handle them differently from the rest.</p>
<h2>Named Locations</h2>
<p>In order to identify legitimate sign-in requests coming from your VBO server(s), we must create a Named Location within Conditional Access.</p>
<p><strong>Step 1</strong> &#8211; Within the Azure Portal, navigate to <strong>Azure Active Directory</strong>, then click on <strong>Conditional Access</strong>, and then click on <strong>Named locations</strong>.</p>
<p><img decoding="async" loading="lazy" class="alignnone wp-image-331" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Azure-CA.png" alt="" width="595" height="678" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Azure-CA.png 650w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Azure-CA-263x300.png 263w" sizes="(max-width: 595px) 85vw, 595px" /></p>
<p><strong>Step 2</strong> &#8211; Click on <strong>+ New location</strong></p>
<p><img decoding="async" loading="lazy" class="alignnone wp-image-307" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-1.png" alt="" width="595" height="254" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-1.png 1001w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-1-300x128.png 300w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-1-768x328.png 768w" sizes="(max-width: 595px) 85vw, 595px" /></p>
<p><strong>Step 3</strong> &#8211; Give your location a <strong>name</strong>, select <strong>IP ranges</strong> and enter one or more IP ranges for your Veeam Backup for Microsoft Office 365 (VBO) server(s).</p>
<pre><strong>Note</strong>: the IP ranges are entered in <a href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation" target="_blank" rel="noopener noreferrer">CIDR notation</a>.  For a single IP address, enter it with a trailing "/32" as in: 192.168.101.22/32.  Do *not* use a private IP address; the above is just an example.  Use a public IP address.</pre>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-308" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-2.png" alt="" width="729" height="397" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-2.png 729w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Locations-2-300x163.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>At this point, you have a Named Location you can use within a Conditional Access Policy&#8217;s location condition.  We will do this next.</p>
<h2>Restrict the VBO Account</h2>
<p>In order to restrict the VBO (or some other application&#8217;s) account to only be permitted to sign-in from a particular location, we need to create a Conditional Access policy to by default, Block access for this user account, except when signing in from the Named Location we created in the previous section.</p>
<pre><span style="color: #ff0000;"><strong>Warning and Disclaimer</strong><strong>:</strong></span> <strong>Conditional Access Policies can completely lock you and your organization out of Azure and Office 365.  Neither I nor this site can be held responsible for your, your organization's, or any third-party's actions.

</strong>Take extreme care when creating Conditional Access Policies within Azure AD by ensuring to EXCLUDE at least one Global Administrator within your tenant within each policy you create or modify until you are certain the policy will not lock out other administrators or unintended end-users.</pre>
<p><strong>Step 1</strong> &#8211; Within the Azure Portal, navigate to <strong>Azure Active Directory</strong>, then click on <strong>Conditional Access</strong>, and then click on <strong>Policies</strong>.</p>
<p><strong>Step 2</strong> &#8211; Click on <strong>+ New policy</strong></p>
<p><strong>Step 3</strong> &#8211; Provide a <strong>name</strong> for your policy as I did here.</p>
<p><strong>Step 4</strong> &#8211; Under &#8216;Assignments&#8217; click on <strong>Users and groups</strong>, under the &#8216;Include&#8217; tab, click on<strong> Select users and groups</strong> and check the <strong>Users and groups</strong> check box.</p>
<p><strong>Step 5</strong> &#8211; Click on <strong>Select</strong> as shown by the red arrow in the next screen shot, search for your Veeam VBO Backup Account and <strong>add it to the list</strong>.  Click <strong>Done</strong>.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-309" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-1.png" alt="" width="624" height="630" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-1.png 624w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-1-150x150.png 150w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-1-297x300.png 297w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p><strong>Step 6</strong> &#8211; Under &#8216;Assignments&#8217; click on <strong>Conditions</strong>, then click on <strong>Locations</strong>, and click to enable this condition by clicking on <strong>Yes</strong> under &#8216;Configure&#8217; as seen in the next screen shot.</p>
<p><strong>Step 7</strong> &#8211; Under the &#8216;Include&#8217; tab, ensure <strong>Any location</strong> is selected.</p>
<p><img decoding="async" loading="lazy" class="alignnone wp-image-310" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-2.png" alt="" width="595" height="468" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-2.png 939w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-2-300x236.png 300w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-2-768x604.png 768w" sizes="(max-width: 595px) 85vw, 595px" /></p>
<p><strong>Step 8</strong> &#8211; Click on the &#8216;Exclude&#8217; tab and select the <strong>Selected locations</strong> option.  Click on <strong>Select</strong> and pick the Named Location we created in the previous section for your VBO server(s).  Click on <strong>Done</strong>.  Click <strong>Done</strong> again.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-311" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-3.png" alt="" width="314" height="748" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-3.png 314w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Restrict-3-126x300.png 126w" sizes="(max-width: 314px) 85vw, 314px" /></p>
<p><strong>Step 9</strong> &#8211; Important: As per the highlight two screen shots back, under &#8216;Access controls&#8217; click on <strong>Grant</strong> and select<strong> Block access</strong>, then click <strong>Done</strong>.</p>
<p><strong>Step 10</strong> &#8211; Under &#8216;Enable policy&#8217; select <strong>On</strong> to enable it and click <strong>Done</strong>.</p>
<p>You are done setting up the new policy to restrict your VBO backup account to only sign-in from a specific location.  Next, let&#8217;s block Legacy Authentication for all other user accounts within the Azure AD tenant.</p>
<h2>Prevent/Block Legacy Authentication</h2>
<p>We are not finished just yet.  Let&#8217;s accomplish the end goal &#8211; Preventing Legacy Authentication for all other user accounts within Azure AD.  We will need to create another new CA policy for this.</p>
<p><strong>Step 1</strong> &#8211; Once again, within the Azure Portal, navigate to <strong>Azure Active Directory</strong>, then click on <strong>Conditional Access</strong>, and then click on <strong>Policies</strong>.</p>
<p><strong>Step 2</strong> &#8211; Click on <strong>+ New policy</strong></p>
<p><strong>Step 3</strong> &#8211; Provide a descriptive <strong>name</strong> for your policy as I did here (e.g. Block Legacy Authentication Clients).</p>
<p><strong>Step 4</strong> &#8211; Under &#8216;Assignments&#8217; click on <strong>Users and groups</strong>, under the &#8216;Include&#8217; tab, click on<strong> All users</strong>.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-312" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-1.png" alt="" width="629" height="748" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-1.png 629w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-1-252x300.png 252w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p><strong>Step 5</strong> &#8211; Click on the &#8216;Exclude&#8217; tab and choose <strong>Users and groups</strong>, then click on <strong>Select excluded users</strong> and add your Veeam Backup account <em>along with at least one Azure Global Administrator</em> until you confirm all is good after testing.  Click <strong>Done</strong> to close the panel.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-313" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-2.png" alt="" width="314" height="749" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-2.png 314w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-2-126x300.png 126w" sizes="(max-width: 314px) 85vw, 314px" /></p>
<p><strong>Step 6</strong> &#8211; Under &#8216;Assignments&#8217; click on <strong>Conditions</strong>, then click on <strong>Client apps</strong>.  Start by selecting <strong>Yes</strong> under &#8216;Configure&#8217; to enable this section.</p>
<p><strong>Step 7</strong> &#8211; Place a checkbox next to only the following two options (as seen in the next screen shot): <strong>Mobile apps and desktop clients</strong> as well as <strong>Other clients</strong>.  Now click <strong>Done</strong> and click <strong>Done </strong>once again to return to the policy panel.</p>
<p><img decoding="async" loading="lazy" class="alignnone wp-image-314" src="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-3.png" alt="" width="595" height="471" srcset="https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-3.png 944w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-3-300x238.png 300w, https://www.liktorius.com/wp-content/uploads/2019/07/Prevent-Legacy-Auth-Block-3-768x609.png 768w" sizes="(max-width: 595px) 85vw, 595px" /></p>
<p><strong>Step 8</strong> &#8211; As per the highlight on the previous screen shot, under &#8216;Access controls&#8217; click on <strong>Grant</strong> and select<strong> Block access</strong>, then click <strong>Done</strong>.</p>
<p><strong>Step 9</strong> &#8211; Under &#8216;Enable policy&#8217; select <strong>On</strong> to enable it and click <strong>Done</strong>.</p>
<p>We have finished creating policies.  Now we have to confirm and test them.</p>
<h2>Confirm</h2>
<p>Use the <a href="https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/what-if-tool" target="_blank" rel="noopener noreferrer">What If tool</a> in Azure AD to test the Conditional Access policies we created.  This will allow you to &#8216;mock&#8217; test based on settings such as User, IP address, etc. whether the rules we created permit or block access to users.</p>
<p>Also, you would want to test everything out for yourself and your end users, as well as the VBO backup account immediately or by waiting for its next scheduled backup interval.</p>
<h1>Troubleshooting</h1>
<p>If you run into trouble, make sure your Veeam VBO Backup account is *not* included in some other policy within Conditional Access, as this might be preventing it from authenticating as expected.  Use the What If tool mentioned in the previous section.  Worst case, disable the policies we just created and retest.</p>
<h1>Conclusion</h1>
<p>I just showed you how to better secure your Microsoft Azure AD tenant by preventing Legacy Authentication from taking place for all user accounts except the Veeam Backup for Microsoft Office 365 (VBO) user account, while restricting the VBO user account to only sign-in from a trusted IP address location.</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/07/17/prevent-azure-legacy-auth-for-veeam-vbo-365/">Prevent Legacy Auth in Azure AD while satisfying Veeam VBO 365 and other apps</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.liktorius.com/2019/07/17/prevent-azure-legacy-auth-for-veeam-vbo-365/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Presentation at SQL Saturday #864 South Florida</title>
		<link>https://www.liktorius.com/2019/06/11/presentation-at-sql-saturday-864-south-florida/</link>
		
		<dc:creator><![CDATA[Darius Liktorius]]></dc:creator>
		<pubDate>Tue, 11 Jun 2019 23:40:20 +0000</pubDate>
				<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Saturday]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://www.liktorius.com/?p=255</guid>

					<description><![CDATA[<p>This past weekend I had the opportunity to present at SQL Saturday #864 (South Florida). I would like to thank all of the attendees and the volunteers who made this year&#8217;s event amazing! Check out my session&#8217;s presentation on SQL Server in the Cloud</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/06/11/presentation-at-sql-saturday-864-south-florida/">Presentation at SQL Saturday #864 South Florida</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This past weekend I had the opportunity to present at SQL Saturday #864 (South Florida).</p>
<p>I would like to thank all of the attendees and the volunteers who made this year&#8217;s event amazing!</p>
<p><a href="https://www.liktorius.com/go/sqlsaturday864/">Check out my session&#8217;s presentation on SQL Server in the Cloud</a></p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/06/11/presentation-at-sql-saturday-864-south-florida/">Presentation at SQL Saturday #864 South Florida</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Add a User as a Member from a different Azure AD Tenant</title>
		<link>https://www.liktorius.com/2019/05/14/add-member-user-from-different-azure-tenant/</link>
					<comments>https://www.liktorius.com/2019/05/14/add-member-user-from-different-azure-tenant/#disqus_thread</comments>
		
		<dc:creator><![CDATA[Darius Liktorius]]></dc:creator>
		<pubDate>Tue, 14 May 2019 04:28:27 +0000</pubDate>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">https://www.liktorius.com/?p=217</guid>

					<description><![CDATA[<p>Azure Active Directory (Azure AD) can have two types of users: Member and Guest. Microsoft states the following in their documentation: The UserType has no relation to how the user signs in, the directory role of the user, and so on. This property simply indicates the user's relationship to the host organization and allows the &#8230; <a href="https://www.liktorius.com/2019/05/14/add-member-user-from-different-azure-tenant/" class="more-link">Continue reading<span class="screen-reader-text"> "Add a User as a Member from a different Azure AD Tenant"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/05/14/add-member-user-from-different-azure-tenant/">Add a User as a Member from a different Azure AD Tenant</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Azure Active Directory (Azure AD) can have two types of users: Member and Guest.</p>
<p>Microsoft states the following in their <a href="https://docs.microsoft.com/en-us/azure/active-directory/b2b/user-properties#key-properties-of-the-azure-ad-b2b-collaboration-user" target="_blank" rel="noopener noreferrer">documentation</a>:</p>
<pre style="padding-left: 30px;">The UserType has no relation to how the user signs in, the directory role of the user, and so on. This property simply indicates the user's relationship to the host organization and allows the organization to enforce policies that depend on this property.</pre>
<p>The same <a href="https://docs.microsoft.com/en-us/azure/active-directory/b2b/user-properties#remove-guest-user-limitations" target="_blank" rel="noopener noreferrer">documentation</a> goes on to state:</p>
<pre style="padding-left: 30px;">There may be cases where you want to give your guest users higher privileges. You can add a guest user to any role and even remove the default guest user restrictions in the directory to give a user the same privileges as members.

It's possible to turn off the default limitations so that a guest user in the company directory has the same permissions as a member user.</pre>
<p><strong>So they actually <em>are</em> different&#8230; </strong> What if you do not want to turn off the default limitations for all guest users, but one or more external user(s) need elevated access to manage your entire Azure Directory?  For example, you are working with a consulting firm like <a href="https://www.netcorpinc.com/?utm_source=liktorius.com&amp;utm_medium=web&amp;utm_campaign=liktorius_post&amp;utm_content=body_link" target="_blank" rel="noopener noreferrer">NetCorp</a>, and you need their team to have administrative access into your Azure AD Tenant.</p>
<p>How about <strong>adding the External User as a Member</strong> instead of a Guest?</p>
<p><img decoding="async" loading="lazy" class="alignnone size-large wp-image-226" src="https://www.liktorius.com/wp-content/uploads/2019/05/Post_AzureAD_GuestMemberUsers-1024x236.png" alt="" width="840" height="194" srcset="https://www.liktorius.com/wp-content/uploads/2019/05/Post_AzureAD_GuestMemberUsers-1024x236.png 1024w, https://www.liktorius.com/wp-content/uploads/2019/05/Post_AzureAD_GuestMemberUsers-300x69.png 300w, https://www.liktorius.com/wp-content/uploads/2019/05/Post_AzureAD_GuestMemberUsers-768x177.png 768w, https://www.liktorius.com/wp-content/uploads/2019/05/Post_AzureAD_GuestMemberUsers-1200x277.png 1200w, https://www.liktorius.com/wp-content/uploads/2019/05/Post_AzureAD_GuestMemberUsers.png 1623w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p>This is accomplished through PowerShell using the <strong><a href="https://docs.microsoft.com/en-us/powershell/module/azuread/new-azureadmsinvitation?view=azureadps-2.0" target="_blank" rel="noopener noreferrer">New-AzureADMSInvitation</a></strong> function.  This used to be possible to do through the Portal, though it appears the feature was taken away.</p>
<p>The following is an example of what the call would look like:</p>
<pre style="padding-left: 30px;">New-AzureADMSInvitation -InvitedUserEmailAddress "someuser@someothertenant.onmicrosoft.com" -InviteRedirectUrl "https://www.yourdomain.com" -SendInvitationMessage $false -InvitedUserType "Member"</pre>
<p>It&#8217;s important to address some of the parameters used in the above example.</p>
<p>First, the <strong>InvitedUserType</strong> parameter is set to &#8220;<strong>Member</strong>&#8221; to override the default value of Guest.</p>
<p>Second, a user will have to accept the invitation by accessing a redemption URL while logged in as the invited user.  By default, this invitation will arrive via email.  An edge case caveat here would be if the invited user does not have a mailbox associated with the given Azure AD User&#8217;s login.  The <strong>SendInvitationMessage</strong> parameter controls whether an email invitation is sent.  In our example above, we are turning off this functionality.</p>
<p>Third, the <strong>InviteRedirectUrl</strong> parameter <em>is required</em>, but can be a &#8216;bum&#8217; URL &#8211; so long as the invited user knows this.  Otherwise, it is best to redirect the user to your organization&#8217;s website homepage, or maybe the Azure Portal (e.g. https://portal.azure.com).</p>
<p>The resulting output is as follows.  Please note, if you set <strong>SendInvitationMessage</strong> to $false, you must take note of the value in the InviteRedeemUrl and provide it to the invited user.  Preferably, with instructions on how to access it (while logged in as themselves).</p>
<pre>Id                      : ********-****-****-****-************
InvitedUserDisplayName  : John Doe
InvitedUserEmailAddress : someuser@someothertenant.onmicrosoft.com
SendInvitationMessage   : False

InviteRedeemUrl         : https://invitations.microsoft.com/redeem/?tenant=********-****-****-****-************&amp;user=**********-****-****-***********&amp;ticket=Omgm11231YaPSYkw5Yz21jj1010mnzsd0wP25%2f23aqSQ9u%2bZfTRM%3d&amp;ver=2.0

InviteRedirectUrl       : https://www.yourdomain.com
InvitedUser             : class User {
                            Id: *********-****-****-****-**********
                            OdataType:
                          }
InvitedUserType         : Member
Status                  : PendingAcceptance
</pre>
<p>I hope this was as helpful to you as it was for the customer I was serving today.</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/05/14/add-member-user-from-different-azure-tenant/">Add a User as a Member from a different Azure AD Tenant</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.liktorius.com/2019/05/14/add-member-user-from-different-azure-tenant/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Presentation at South Florida Code Camp 2019</title>
		<link>https://www.liktorius.com/2019/03/11/presentation-at-south-florida-code-camp-2019/</link>
		
		<dc:creator><![CDATA[Darius Liktorius]]></dc:creator>
		<pubDate>Mon, 11 Mar 2019 18:32:05 +0000</pubDate>
				<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<guid isPermaLink="false">http://www.liktorius.com/?p=185</guid>

					<description><![CDATA[<p>Last weekend, I had the opportunity to present at South Florida Code Camp 2019. I would like to thank all of the numerous attendees and the volunteers who made this year&#8217;s event a success! Check out my session&#8217;s presentation on Microsoft Azure vs Amazon Web Services (AWS).</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/03/11/presentation-at-south-florida-code-camp-2019/">Presentation at South Florida Code Camp 2019</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Last weekend, I had the opportunity to present at South Florida Code Camp 2019.</p>
<p>I would like to thank all of the numerous attendees and the volunteers who made this year&#8217;s event a success!</p>
<p><a href="http://www.liktorius.com/go/sflcc/">Check out my session&#8217;s presentation on Microsoft Azure vs Amazon Web Services (AWS)</a>.</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/03/11/presentation-at-south-florida-code-camp-2019/">Presentation at South Florida Code Camp 2019</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Office 365, DKIM, and a naughty domain name</title>
		<link>https://www.liktorius.com/2019/02/19/office365-dkim-and-a-naughty-domain/</link>
					<comments>https://www.liktorius.com/2019/02/19/office365-dkim-and-a-naughty-domain/#disqus_thread</comments>
		
		<dc:creator><![CDATA[Darius Liktorius]]></dc:creator>
		<pubDate>Tue, 19 Feb 2019 20:30:50 +0000</pubDate>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office365]]></category>
		<guid isPermaLink="false">http://www.liktorius.com/?p=59</guid>

					<description><![CDATA[<p>While helping a customer setup their Office 365 tenant, we ran into an edge case scenario&#8230; An Internet domain name with a hyphen (minus symbol) in it.  Let&#8217;s call is domain-name.com. When you setup DKIM for Office 365, the DKIM &#8216;selector&#8217; entries you have to create within your domain&#8217;s DNS zone are of type CNAME, &#8230; <a href="https://www.liktorius.com/2019/02/19/office365-dkim-and-a-naughty-domain/" class="more-link">Continue reading<span class="screen-reader-text"> "Office 365, DKIM, and a naughty domain name"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/02/19/office365-dkim-and-a-naughty-domain/">Office 365, DKIM, and a naughty domain name</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While helping a customer setup their Office 365 tenant, we ran into an edge case scenario&#8230;</p>
<p>An Internet domain name with a hyphen (minus symbol) in it.  Let&#8217;s call is <strong>domain-name.com</strong>.</p>
<p>When you setup DKIM for Office 365, the DKIM &#8216;selector&#8217; entries you have to create within your domain&#8217;s DNS zone are of type CNAME, and they refer to custom entries, hosted by Microsoft for your Office 365 tenant.</p>
<p>An example of this is as follows, <a href="https://docs.microsoft.com/en-us/office365/securitycompliance/use-dkim-to-validate-outbound-email" target="_blank" rel="noopener noreferrer">per Microsoft</a>:</p>
<pre style="padding-left: 30px;">Host name: selector1._domainkey
Points to address or value: selector1-&lt;domainGUID&gt;._domainkey.&lt;initialDomain&gt; 
TTL: 3600

Host name: selector2._domainkey
Points to address or value: selector2-&lt;domainGUID&gt;._domainkey.&lt;initialDomain&gt; 
TTL: 3600</pre>
<p>Where:</p>
<ul>
<li>For Office 365, the selectors will always be &#8220;selector1&#8221; or &#8220;selector2&#8221;.</li>
<li><em>domainGUID</em> is the same as the <em>domainGUID</em> in the customized MX record for your custom domain that appears before mail.protection.outlook.com. For example, in the following MX record for the domain contoso.com, the <em>domainGUID</em> is contoso-com:</li>
</ul>
<pre style="padding-left: 30px;">contoso.com. 3600 IN MX 5 <strong>contoso-com</strong>.mail.protection.outlook.com</pre>
<ul>
<li><em>initialDomain</em> is the domain that you used when you signed up for Office 365. Initial domains always end in onmicrosoft.com. For information about determining your initial domain, see <a href="https://support.office.com/article/1272bad0-4bd4-4796-8005-67d6fb3afc5a#bkmk_whydoihaveanonmicrosoft.comdomain" target="_blank" rel="noopener noreferrer" data-linktype="external">Domains FAQ</a>.</li>
</ul>
<p><span style="color: #ff0000;"><strong>Note:</strong></span> The domain name portion (&lt;domainGUID&gt;) of the Fully Qualified Domain Name (FQDN) of <b>contoso.com</b> which is <strong>contoso</strong> and its Top Level Domain (TLD), <strong>.com</strong> are <span style="text-decoration: underline;">not</span> separated as expected with a period in the &#8216;target&#8217; value of the CNAME records.</p>
<p>Instead, they are separated with a hyphen (minus symbol) as in: <strong>contoso-com</strong></p>
<p>So if the delimiter between your domain name and TLD is a hyphen, what happens if your domain itself contains a hyphen (e.g. <strong>domain-name.com</strong>)?</p>
<p><strong>This is where the trouble comes, but how do you resolve it?</strong></p>
<p>Once you have added your domain name within the <strong>Office 365 Admin Portal</strong>, under <strong>Setup &gt; Domains</strong>, and you click on the domain name, take a look at the expected DNS record entries.  Under the proposed MX (mail exchange) record for your domain name, you may be surprised to see extra characters after your domain name, such as &#8220;0c&#8221; and the original hyphen from your domain name (domain-name.com) completely removed:</p>
<pre style="padding-left: 30px;"><strong>domain-name.com.</strong> 3600 IN MX 5 <strong>domainname-com0c</strong>.mail.protection.outlook.com</pre>
<p><span style="color: #ff0000;"><strong>This subtle change is key to a successful DKIM setup for a domain with a hyphen in its name.</strong></span></p>
<p>So then we know your DKIM selector <strong>CNAME entry target values</strong> should read as follows:</p>
<pre style="padding-left: 30px;">selector1-<strong>domainname-com0c</strong>._domainkey.<strong>domainname</strong>.onmicrosoft.com

selector2-<strong>domainname-com0c</strong>._domainkey.<strong>domainname</strong>.onmicrosoft.com
</pre>
<p>There you have it!</p>
<p>If this was helpful to you, please share it by Tweeting about your newfound discovery!</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/02/19/office365-dkim-and-a-naughty-domain/">Office 365, DKIM, and a naughty domain name</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.liktorius.com/2019/02/19/office365-dkim-and-a-naughty-domain/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Where oh where did my DKIM go?</title>
		<link>https://www.liktorius.com/2019/02/05/where-oh-where-did-my-dkim-go/</link>
					<comments>https://www.liktorius.com/2019/02/05/where-oh-where-did-my-dkim-go/#disqus_thread</comments>
		
		<dc:creator><![CDATA[Darius Liktorius]]></dc:creator>
		<pubDate>Tue, 05 Feb 2019 17:28:41 +0000</pubDate>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office365]]></category>
		<guid isPermaLink="false">http://www.liktorius.com/?p=54</guid>

					<description><![CDATA[<p>While helping a customer setup their Microsoft Office 365 tenant this past week, we ran into an issue with enabling DKIM within Exchange Online. Within the Exchange Admin Center (EAC), under protection &#62; dkim, for each domain, the Enable option was completely missing. It was a long shot, but I tried enabling it using PowerShell &#8230; <a href="https://www.liktorius.com/2019/02/05/where-oh-where-did-my-dkim-go/" class="more-link">Continue reading<span class="screen-reader-text"> "Where oh where did my DKIM go?"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/02/05/where-oh-where-did-my-dkim-go/">Where oh where did my DKIM go?</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While helping a customer setup their Microsoft Office 365 tenant this past week, we ran into an issue with enabling DKIM within Exchange Online.</p>
<p>Within the <strong>Exchange Admin Center (EAC)</strong>, under <strong>protection &gt; dkim</strong>, for each domain, the Enable option was completely missing.</p>
<p>It was a long shot, but I tried enabling it using PowerShell for Exchange Online with the <span class="hljs-pscommand"><strong>New-DkimSigningConfig</strong> command for each domain as follows:</span></p>
<pre style="padding-left: 30px;"><span class="hljs-parameter"><span class="hljs-pscommand">New-DkimSigningConfig</span> -DomainName contoso.com -Enabled <span class="hljs-literal">$true</span></span></pre>
<p>ref: <a href="https://docs.microsoft.com/en-us/powershell/module/exchange/antispam-antimalware/new-dkimsigningconfig?view=exchange-ps" target="_blank" rel="noopener noreferrer">Microsoft Docs</a></p>
<p>Here is what the output looks like upon successfully calling <strong>New-DkimSigningConfig</strong>:</p>
<pre style="padding-left: 30px;">PS C:\Users\contosoadmin&gt; New-DkimSigningConfig -DomainName mydomain.com -Enabled $true
WARNING: The config was created but can't be enabled because the CNAME records
aren't published. Publish the following two CNAME records, and then enable the
config by using Set-DkimSigningConfig.
selector1-mydomain-com._domainkey.myO365org.onmicrosoft.com
selector2-mydomain-com._domainkey.myO365org.onmicrosoft.com

Domain        Enabled
------        -------
mydomain.com  False</pre>
<p>Then, back within the <strong>Exchange Admin Center (EAC)</strong>, under <strong>protection &gt; dkim</strong>, I can now select the domain I just created a new DKIM Signing Config for, and click to <strong>Enable</strong> it as seen in the following screen shot.</p>
<p>Before you can Enable it though, you have to add the expected CNAME records to DNS.  I have a <a href="/2019/02/08/office365-dkim-a…a-naughty-domain/">separate post covering the required DNS additions</a>.</p>
<p style="padding-left: 30px;"><img decoding="async" loading="lazy" class="alignnone wp-image-89 size-full" src="http://www.liktorius.com/wp-content/uploads/2019/02/o365-dkim-enable.png" alt="" width="371" height="219" srcset="https://www.liktorius.com/wp-content/uploads/2019/02/o365-dkim-enable.png 371w, https://www.liktorius.com/wp-content/uploads/2019/02/o365-dkim-enable-300x177.png 300w" sizes="(max-width: 371px) 85vw, 371px" /></p>
<p>Thankfully, this worked, and now next to each domain within EAC, DKIM shows as enabled, and presents the expected options &#8220;Disable&#8221; and &#8220;Rotate&#8221; (to rotate the DKIM key):</p>
<p style="padding-left: 30px;"><img decoding="async" loading="lazy" class="alignnone wp-image-90 size-full" src="http://www.liktorius.com/wp-content/uploads/2019/02/o365-dkim-enabled.png" alt="" width="553" height="199" srcset="https://www.liktorius.com/wp-content/uploads/2019/02/o365-dkim-enabled.png 553w, https://www.liktorius.com/wp-content/uploads/2019/02/o365-dkim-enabled-300x108.png 300w" sizes="(max-width: 553px) 85vw, 553px" /></p>
<p>If this post was helpful to you, please Tweet and share it with others.</p>
<p>The post <a rel="nofollow" href="https://www.liktorius.com/2019/02/05/where-oh-where-did-my-dkim-go/">Where oh where did my DKIM go?</a> appeared first on <a rel="nofollow" href="https://www.liktorius.com">Darius Liktorius</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.liktorius.com/2019/02/05/where-oh-where-did-my-dkim-go/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>