<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Paul Wu on Microsoft Technology</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/paulwu/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/paulwu/feed.xml</link>
    <description>Musing on all things related to CSI - Cloud, Security and Identity</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:41:32 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>New Claims Demo app</title>
      <link>https://docs.microsoft.com/archive/blogs/paulwu/new-claims-demo-app</link>
      <pubDate>Wed, 03 Feb 2016 21:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Paul Wu - MCS]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/paulwu/2016/02/03/new-claims-demo-app/</guid>
      <description><![CDATA[I updated the sample claims app for quickly troubleshooting a user's SAML claims. Click on the...]]></description>
      <content:encoded><![CDATA[I updated the sample claims app for quickly troubleshooting a user's SAML claims. Click on the "Claims" tab to get authenticated against the configured Identity Provider. This version uses the latest OWIN library and .Net 4.52.
<div><span style="font-size: x-large">Prerequisites</span>
<span style="font-family: courier new,courier">Install-WindowsFeature NET-Framework-45-Core, NET-Framework-45-ASPNET, Web-Asp-Net45, Web-Net-Ext45 </span></div>
&nbsp;

&nbsp;

<span style="font-size: x-large">web.config</span>
Update the appSetting section with the correct ADFS Federation Metadata XML endpoint and Relying Party ID

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/8512.appSettings.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/8512.appSettings.png" border="0" /></a>

&nbsp;

<span style="font-size: x-large">ADFS Config</span>
Create a Relying Party with the Relying Party ID matching the wtrealm setting in the web.config.

Update the return URL to reflect the URL of the application

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/1856.rp_replyUrl.png"><img width="396" height="252" title="Edit Endpoint Wizard" alt="Edit Endpoint Wizard" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/1856.rp_replyUrl.png" /></a>

Add an Issuance Transformation Rule with the following syntax:

<span style="font-family: courier new,courier;font-size: large">C:[]</span>

<span style="font-family: courier new,courier;font-size: large">=&gt; issue(claim = c);</span>

Additional configuration may be required on WAP server if this application will be accessed on the extranet

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/66/80/54/MCS.DemoWeb.KatanaN452.zip">MCS.DemoWeb.KatanaN452.zip</a>

&nbsp;

&nbsp;

This post has been moved here: <a href="https://paulwu108883359.wordpress.com/2018/10/03/claims-demo-app/">https://paulwu108883359.wordpress.com/2018/10/03/claims-demo-app/</a>

&nbsp;

[bing_translator]]]></content:encoded>
    </item>
    <item>
      <title>MFA Support for Windows Azure Active Directory PowerShell Module</title>
      <link>https://docs.microsoft.com/archive/blogs/paulwu/mfa-support-for-windows-azure-active-directory-powershell-module</link>
      <pubDate>Fri, 09 Oct 2015 18:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Paul Wu - MCS]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/paulwu/2015/10/09/mfa-support-for-windows-azure-active-directory-powershell-module/</guid>
      <description><![CDATA[Administering O365 is quite easy using the O365 Portal. However, power users may prefer the...]]></description>
      <content:encoded><![CDATA[Administering O365 is quite easy using the O365 Portal. However, power users may prefer the flexibility of script based management via PowerShell. The “Windows Azure Active Directory Module for Windows PowerShell” (WAADMfWP) provides such capability. With just a few lines of code, the power user can provision millions of accounts and modify O365 resources with no user interaction.

As one famous comic book character once said: “with great power comes great responsibility”. It is important to secure such power and adding Multi-Factor Authentication (MFA) is a good way to add an additional layer of protection.

Enabling MFA for Azure Active Directory (<em>and O365 by extension</em>) is quite easy for web based access. This is because Azure MFA uses HTTP redirection to control the authentication flow and the Web browser understands HTTP redirection nativily.

MFA support for the current version of WAADMfWP is not possible because the current WAADMfWP uses the “Microsoft Online Services Sign-In Assistant” to handle credential authentication.

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/6866.Old%20Credential%20UI.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/6866.Old%20Credential%20UI.png" border="0" /></a>

This sign-In assistant only works with non-MFA enabled identities because it is not designed to understand the HTTP redirection associated with a MFA enabled authentication flow.

The good news is that there is a new version of WAADMfWP in public preview. This new WAADMfWP uses ADAL based authentication UI which is able to follow HTTP redirection. Because of this, the new module will work with MFA enabled identities.

&nbsp;

Before installing the new WAADMfWP, you must do the following:

1)   Uninstall the old WAADMfWP if you have one installed. The old one is 4.88 mb in size
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/8712.Old%20WAADMfWP.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/8712.Old%20WAADMfWP.png" border="0" /></a></p>
2)   Uninstall the Microsoft Online Services Sign-In Assistant
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/4010.Uninstall%20Microsoft%20Online%20Service%20Sign-In%20Assistant.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/4010.Uninstall%20Microsoft%20Online%20Service%20Sign-In%20Assistant.png" border="0" /></a></p>
Download the preview version from here:

<a href="https://connect.microsoft.com/site1164/Downloads/DownloadDetails.aspx?DownloadID=59185">https://connect.microsoft.com/site1164/Downloads/DownloadDetails.aspx?DownloadID=59185</a>

Once you have it installed, you must be aware of the following before starting:

With the old WAADMfWP, you can use <strong>Connect-MsolService</strong> with or without the –Credential parameter. If you do not supply the Credential parameter, you’ll be prompted with a UI to
enter the credential.

The new WAADMfWP works slightly different in that if you want it to support MFA, you’ll need to call <strong>Connect-MsolService </strong>without the -Credential parameter.

The new WAADMfWP module uses ADAL to prompt the user credential with a browser based UI.

<img width="304" height="440" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/1108.ADAL%20UI.png" border="0" />

If the user account is in a domain that is federated, the user is redirected to the federated STS

&nbsp;

In this example, the STS is an ADFS server. The user enters the password

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/1832.ADFS%20Prompt.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/1832.ADFS%20Prompt.png" border="0" /></a>

ADFS validates the password and determines whether the user needs step-up authentication. In this case, we've configured Azure MFA server as an MFA provider and this user satisfies an ADFS rule to require MFA. The user clicks [Continue] to initiates the configured MFA option

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/0652.MFA%20Prompt.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/0652.MFA%20Prompt.png" border="0" /></a>

In this example, this users is configured to have the MFA server send a One Time Passcode (OTP). The user must enter the OTP to authenticate.

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/0876.MFA%20OTP.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/0876.MFA%20OTP.png" border="0" /></a>

If the user fails to provide the correct OTP, the user will receive the appropriate error message from ADFS (customizable) and the Connect-MsolService command will fail

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/5811.ADFS%20Fail.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/55/96/5811.ADFS%20Fail.png" border="0" /></a>

If the user enters the correct OTP, the control is returned back to the WAADMfWP and a valid session now exists.

The Credential parameter is still supported but works only for non MFA enabled identities.

A new AccessToken parameter is added to the Connect-MsolService cmdlet. I'll cover this in a future post if there is enough interests.

The new WAADMfWP also adds other new cmdlets:
<ul>
 	<li>Get-MsolDevice</li>
 	<li>Enable-MsolDevice</li>
 	<li>Disable-MsolDevice</li>
 	<li>Remove-MsolDevice</li>
</ul>
&nbsp;

Note that this new WAADMfWP will not work with tenants in China.

Enjoy

&nbsp;

<span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px">This post has been moved here: <a href="https://paulwu108883359.wordpress.com/2018/10/03/mfa-support-for-windows-azure-active-directory-powershell-module/">https://paulwu108883359.wordpress.com/2018/10/03/mfa-support-for-windows-azure-active-directory-powershell-module/</a></span>

[bing_translator]]]></content:encoded>
    </item>
    <item>
      <title>Claims Demo App</title>
      <link>https://docs.microsoft.com/archive/blogs/paulwu/claims-demo</link>
      <pubDate>Mon, 31 Mar 2014 09:39:26 GMT</pubDate>
      <dc:creator><![CDATA[Paul Wu - MCS]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/paulwu/2014/03/31/test-upload/</guid>
      <description><![CDATA[Sample ASP.NET app for testing Claims Based Security. Download and rename file extension to...]]></description>
      <content:encoded><![CDATA[Sample ASP.NET app for testing Claims Based Security. Download and rename file extension to .zip

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/51/23/98/MvcWIA.txt">MvcWIA.txt</a>

&nbsp;

&nbsp;

[bing_translator]]]></content:encoded>
    </item>
  </channel>
</rss>