<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>FredChap's blog</title><link>http://blogs.msdn.com/b/fchapleau/</link><description>Days and (mostly) nights of Frederick Chapleau, an ADM from Montreal, Canada</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>We Are Doing Daily Standups, So We Are Agile</title><link>http://blogs.msdn.com/b/fchapleau/archive/2013/04/28/we-are-doing-daily-standups-so-we-are-agile.aspx</link><pubDate>Sun, 28 Apr 2013 23:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10420167</guid><dc:creator>Frederick Chapleau [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/fchapleau/rsscomments.aspx?WeblogPostID=10420167</wfw:commentRss><comments>http://blogs.msdn.com/b/fchapleau/archive/2013/04/28/we-are-doing-daily-standups-so-we-are-agile.aspx#comments</comments><description>&lt;p&gt;Daily standups are a really good practice, even if a team is not using an agile methodology. But let’s try to clarify things, because the statement “We are doing daily standups, so we are Agile” is a little confusing.&lt;/p&gt;  &lt;h2&gt;What is a Daily Standup?&lt;/h2&gt;  &lt;p&gt;A daily scrum is one of the most hands-on activities of the Scrum framework. There are rules a team should follow when &lt;i&gt;standing up&lt;/i&gt;, like being prepared, on time and time-boxed. The main goal is to address what was done yesterday, what you are going to do today, and what are the &lt;i&gt;road blocks&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;As you can see, a daily standup is not strictly related to Scrum or Agile. I often found that daily standups are part of a routine even if Scrum is not used, and I also found teams that were doing daily standups while using a waterfall methodology (!).&lt;/p&gt;  &lt;p&gt;So, what’s the relationship between daily standup and agile methodologies?&lt;/p&gt;  &lt;h2&gt;The Daily Portion of the Methodology&lt;/h2&gt;  &lt;p&gt;Daily standup addresses the daily portion of the methodology, so it’s a part of an agile methodology. By doing a standup, a team is able to react quickly to changes, quickly address roadblocks and enable better communication between the team members. But there is more. Obviously, the daily portion does not address short and medium-term planning, called iterations or sprints in Scrum. Iterations are:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Short time frames that typically last from one to four weeks. Each iteration involves a cross-functional team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing. (&lt;/i&gt;&lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;&lt;i&gt;ref&lt;/i&gt;&lt;/a&gt;&lt;i&gt;)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Each iteration is part of a release, which is part of the overall agile vision. Without going into the details or trying to summarize the whole methodology in a couple of paragraphs, I will try to list a couple of things that can get your team nearer to being &lt;i&gt;Agile&lt;/i&gt;.&lt;/p&gt;  &lt;h2&gt;Some Activities, Milestones and Artifacts&lt;/h2&gt;  &lt;h3&gt;Daily Standup&lt;/h3&gt;  &lt;p&gt;If nothing else, don’t neglect this daily habit. In my experience, it’s the core of the methodology because it enables &lt;b&gt;communication&lt;/b&gt; within the team in such a way that everybody focuses on the real, tangible goals without getting bogged down by details.&lt;/p&gt;  &lt;h3&gt;Iteration or Sprint&lt;/h3&gt;  &lt;p&gt;Doing iterations is a must, but it’s the hardest thing to achieve. In traditional waterfall models, the developers were working on strict requirements that were defined and approved by the stakeholders prior to beginning the development. The agile methodology allows the customer to change their mind, therefore the development effort and specifications cannot be determined upfront. This is one of the most challenging aspects of agile to implement when a team is used to development in a fixed-requirements context.&lt;/p&gt;  &lt;h3&gt;Product Backlog&lt;/h3&gt;  &lt;p&gt;Establishing a product backup will clarify the real orientation of the software and provide transparency to the stakeholder(s). This backlog is also a great tool for prioritizing the features and focusing on the &lt;a href="http://blogs.msdn.com/b/fchapleau/archive/2013/01/13/the-value-style.aspx"&gt;real value&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Sprint Backlog&lt;/h3&gt;  &lt;p&gt;The sprint backlog is the list of requirements the development team should address in the current sprint. Each item has a related, quantifiable effort, and the total effort for all the work should fit in the current iteration. Understanding that will help focus the development team on the specific requirements, instead of going in every direction trying to develop the whole software in the first month.&lt;/p&gt;  &lt;h3&gt;Burn Down&lt;/h3&gt;  &lt;p&gt;Visibility, visibility and visibility. One of main arguments for using an agile methodology is to have visibility for the stakeholder(s) throughout the development. A burn down chart graphically compares the projected burn rate with the current burn rate.&lt;/p&gt;  &lt;h2&gt;Only the Beginning&lt;/h2&gt;  &lt;p&gt;Again, I am not trying to summarize or to describe the whole methodology in this article. These activities, milestones or artifacts are only some that I have found to be important in making a team be more agile and adaptable. &lt;/p&gt;  &lt;p&gt;Afterwards, there are some other activities that could be employed, such as using stories to describe the requirements, estimating story points to evaluate the efforts, or even using planning poker as a way of giving points to a story. &lt;/p&gt;  &lt;p&gt;There are also many tools that can be used for reporting and to track work item efficiency (Yes, I am talking about those things you saw in Visual Studio). I will discuss those tools in more depth in the following posts, because those tools are really useful when it’s time to be more productive in our management of agile projects. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10420167" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/fchapleau/archive/tags/Methodology/">Methodology</category></item><item><title>Why being SMART?</title><link>http://blogs.msdn.com/b/fchapleau/archive/2013/03/30/why-being-smart.aspx</link><pubDate>Sat, 30 Mar 2013 12:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10410602</guid><dc:creator>Frederick Chapleau [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/fchapleau/rsscomments.aspx?WeblogPostID=10410602</wfw:commentRss><comments>http://blogs.msdn.com/b/fchapleau/archive/2013/03/30/why-being-smart.aspx#comments</comments><description>&lt;h1&gt;The Importance of Being S.M.A.R.T.&lt;/h1&gt;  &lt;p&gt;Many methodologies are trying to align technology related-activities to the purely business activities. With Premier (forgive my non-subtle link to the Microsoft Premier Services), we are using PSDM (Premier Service Delivery Methodology), which is essentially anchoring activities with the real &lt;a href="http://blogs.msdn.com/b/fchapleau/archive/2013/01/13/the-value-style.aspx"&gt;value&lt;/a&gt; provided to the business. With PSDM, we are defining Goals and Value in such a way to reveal if related activities are providing value to the business.&lt;/p&gt;  &lt;p&gt;Setting objectives can be a hard task, simply because they are not activities or tangible deliverables that can be executed directly. Objectives are big-picture orientations toward business goals, enabled by purposeful activities. Because of their nature, it may be gauge the quality of an objective, at least in the early stages. &lt;/p&gt;  &lt;p&gt;Using SMART characteristics are a way of validating objectives by gauging if they are meeting selected criteria. Let's discuss each of them and illustrate them with real life examples.&lt;/p&gt;  &lt;h2&gt;Specific&lt;/h2&gt;  &lt;p&gt;Being specific can be difficult. If an objective is too specific, it can be hard to achieve; if it is not specific enough, it can be hard to measure. So the rule of thumb is to be specific enough within the context of the objective. If the objective can be removed from the context, it’s because it is not specific enough. On the other hand, if the objective is too specific, generally you will be able to merge it with another one. Here are some objectives that are either too specific or not specific enough.&lt;/p&gt;  &lt;h3&gt;Too Specific&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;The IT Department should be able to attain 82% resolved Exchange Incident related to uptime of the T1 link on the east coast, when the west coast link is used at more than 80%.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Obviously here the circumstances are too specific to be able to measure without deploying some really deeply integrated reporting tools.&lt;/p&gt;  &lt;h3&gt;Not Specific Enough&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;The IT Department should be able to attain 82% resolved cases.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where are the cases? All type of cases? Only for customer requests? If a client is calling because his Xbox is not working, is it impacting this number?&lt;/p&gt;  &lt;h2&gt;Measurable&lt;/h2&gt;  &lt;p&gt;Being measurable is one of the most important characteristics. It is the key characteristic that will provide empirical evidence as to whether an objective has been met or not. An objective is measurable if its accomplishment and success can be described with a simple “Yes” or “No.” It is the difference between qualitative and quantitative.&lt;/p&gt;  &lt;h3&gt;Not Measurable&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;The code should be well documented, so that any consultant could easily jump into the project.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;How can the code be well documented? If a line of comment is added to each code file, is it enough?&lt;/p&gt;  &lt;h3&gt;Measurable&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Every Class file and Method should be documented using the standard XML comment format and method; more than 50 lines of code should contain Region and describe what is in the scope.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This very specific objective could be automated using check-in policy in Team Foundation Server, and the measure can be reported with the TFS report engine.&lt;/p&gt;  &lt;h2&gt;Attainable&lt;/h2&gt;  &lt;p&gt;This characteristic is also known as achievable. From the outset, there should be at least one way of achieving the objective. Even if it’s difficult or if it requires many resources, it should be achievable.&lt;/p&gt;  &lt;h3&gt;Achievable&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;Reduce help desk calls related to the ERP system by 30% within 12 months.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;30% can be enough for the majority of IT departments, and having a reasonable timeframe allows for the objective to be well understood and then achieved.&lt;/p&gt;  &lt;h3&gt;Not Attainable&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;The ERP Project should be realized by the end of the fiscal year.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It’s not an error, because the context could change. If in this context the ERP must be implemented in all departments of a 5000-employee company, even if all available resources are dedicated to the task, it is not realistic that this could be achieved.&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;h2&gt;Relevant&lt;/h2&gt;  &lt;p&gt;Objectives should be linked to the business. Even if an objective meets all criteria, it’s not relevant if it does not provide value.&lt;/p&gt;  &lt;h3&gt;Realistic&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;The automated unit tests should cover at least 80% of the software code.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This could be related to an R&amp;amp;D department and it is adding value to the business.&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;h3&gt;Irrelevant&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;Improve the backup strategy, so that a backup is done at least once a day.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This could be relevant, but it’s completely irrelevant for an R&amp;amp;D department not responsible for the backup strategy.&lt;/p&gt;  &lt;h2&gt;Timely&lt;/h2&gt;  &lt;p&gt;If an objective cannot be achieved in a specific amount of time, it’s not achievable at all.&lt;/p&gt;  &lt;h3&gt;Timely&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;No bugs should be discovered by at least three consecutive passes of unit testing each day for a period of 3 months.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The &lt;i&gt;period&lt;/i&gt; part of the objective pertains to the Timely characteristic. Without this part, there is no single point in time where the objective could be met.&lt;/p&gt;  &lt;h3&gt;Infinite&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;The software code should not contain bugs.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This objective cannot be validated until all licenses of the software are not used anymore.&lt;/p&gt;  &lt;h2&gt;Conclusion&lt;/h2&gt;  &lt;p&gt;Being SMART is one of the most efficient ways of setting clear objectives. SMART objectives can define a solid base of discussions and can be easily aligned with a mission that should provide value to the business.&lt;/p&gt;  &lt;p&gt;After defining them, everything related to them makes more sense. Those objectives are often defined as Key Performance Indicators (KPI) in the modern business world, with specific examples that include &lt;a href="http://www.microsoft.com/en-us/bi/default.aspx"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/hh750382"&gt;Balanced Scorecards&lt;/a&gt; and &lt;a href="http://download.microsoft.com/documents/uk/windowsserversystem/bi/Corporate_Performance_Management_Improving_Business_Performance.doc"&gt;Global Performance Initiatives.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;-f.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10410602" width="1" height="1"&gt;</description></item><item><title>The Evolution of Authentication</title><link>http://blogs.msdn.com/b/fchapleau/archive/2013/02/24/the-evolution-of-authentication.aspx</link><pubDate>Sun, 24 Feb 2013 22:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10396615</guid><dc:creator>Frederick Chapleau [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/fchapleau/rsscomments.aspx?WeblogPostID=10396615</wfw:commentRss><comments>http://blogs.msdn.com/b/fchapleau/archive/2013/02/24/the-evolution-of-authentication.aspx#comments</comments><description>&lt;h1&gt;Authentication versus Authorization&lt;/h1&gt;
&lt;p&gt;Authentication is often confused with authorization. I&amp;rsquo;ve even heard of an eCommerce course wherein the teacher was using both terms as if they were interchangeable. In fact, there is a huge difference between them. Authentication is used to authenticate a user with confidential information known only by the user. After the user is authenticated, the only assurance we have is that the user is the one who created the account and provided the &lt;em&gt;confidential information.&lt;/em&gt; This information does not include enough detail to know if the user has access to a system-specific function (at least it shouldn&amp;rsquo;t).&lt;/p&gt;
&lt;p&gt;On the other hand, authorization is used to provide information about system-specific functions. Authorization is often used at the application level, after authentication is complete. Once the user is authenticated, the account is authorized to use some functionality in a system by the authorization provider.&lt;/p&gt;
&lt;p&gt;When considering authorization, &lt;a href="http://msdn.microsoft.com/en-us/library/bb897401.aspx"&gt;AzMan&lt;/a&gt; is usually the component of choice. Many other products are using their own authorization mechanism; &lt;a href="http://msdn.microsoft.com/en-us/library/ms414400.aspx"&gt;SharePoint&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/gg334717.aspx"&gt;Dynamics CRM&lt;/a&gt; are a couple of examples.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s discuss authentication. Before looking toward future trends, it&amp;rsquo;s necessary to explore some history. We will review why LANMAN is bad, Kerberos is complex but at least can use delegation, and Federated Authentication is the ideal choice.&lt;/p&gt;
&lt;h1&gt;A bit of history&lt;/h1&gt;
&lt;p&gt;Once upon a time, there was a need to authenticate users when computer began to talk to each other. Obviously, users wanted to keep a minimum of confidentiality, and administrators needed the ability to restrict access to specific resources.&lt;/p&gt;
&lt;h2&gt;LANMAN&lt;/h2&gt;
&lt;p&gt;One of the first implementations of an authentication mechanism was the LAN Manager or LANMAN. This technology was based on OS2 and was co-developed by IBM and Microsoft.&lt;/p&gt;
&lt;p&gt;The concept was simple. An &lt;a href="http://technet.microsoft.com/en-us/library/dd277300.aspx"&gt;LM Hash&lt;/a&gt; was made of two parts, containing 7 characters and encrypted with a static key (without a &lt;a href="http://en.wikipedia.org/wiki/Salt_(cryptography)"&gt;salt&lt;/a&gt;). This method of encrypting passwords had many drawbacks. For one thing, because it was divided into two parts, all passwords with less than 7 characters had a static second part, which makes a password really easy to guess.&lt;/p&gt;
&lt;p&gt;Also, passwords were not case sensitive!&lt;/p&gt;
&lt;p&gt;To address these security issues, a new version of LANMAN was created especially for the Windows NT platform. It was called NTLM or NT LAN Manager.&lt;/p&gt;
&lt;h2&gt;NTLM &amp;amp; NTLMv2&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-22-metablogapi/0458.clip_5F00_image001_5F00_3EDF339D.gif"&gt;&lt;img style="margin: 20px auto; border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; float: none; display: block; background-image: none;" title="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-22-metablogapi/6283.clip_5F00_image001_5F00_thumb_5F00_654116E8.gif" alt="clip_image001" width="332" height="236" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;em&gt;Source: &lt;a title="http://msdn.microsoft.com/en-us/library/ff647076.aspx" href="http://msdn.microsoft.com/en-us/library/ff647076.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff647076.aspx&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;NTLM is a more complex authentication protocol. It uses three messages to establish the identity of the client. Without going too deep into the details, the underlying cryptography algorithm is mainly MD4 and DES.&lt;/p&gt;
&lt;p&gt;A second generation of the protocol was released to make it more secure. &lt;a href="http://technet.microsoft.com/en-us/magazine/2006.08.securitywatch.aspx" target="_blank"&gt;NTLMv2 employs the HMAC-MD5&lt;/a&gt; algorithm instead of MD4.&lt;/p&gt;
&lt;p&gt;Both of these protocols are secure enough, but once the user is authenticated, he or she is authenticated against a single server in a specific context. If the authenticated service requires access to another resource on behalf of the user, it cannot use those credentials to access the other service. One of the solutions is to use a service account and rely on the system to give the user appropriate permissions.&lt;/p&gt;
&lt;p&gt;To mitigate this problem (even if it's more a new need than a problem), a token-based authentication mechanism was created &amp;ndash; Kerberos.&lt;/p&gt;
&lt;h2&gt;Kerberos&lt;/h2&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-22-metablogapi/7360.clip_5F00_image002_5F00_2FC854C3.gif"&gt;&lt;img style="margin: 20px; border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-22-metablogapi/1104.clip_5F00_image002_5F00_thumb_5F00_0F411511.gif" alt="clip_image002" width="332" height="232" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;em&gt;Source: &lt;a title="http://msdn.microsoft.com/en-us/library/ff647076.aspx" href="http://msdn.microsoft.com/en-us/library/ff647076.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff647076.aspx&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Kerberos is a ticket-based system that can authenticate a user and delegate the authentication ticket to another service. By doing that, the user is always authenticated for all the hops in the architecture.&lt;/p&gt;
&lt;p&gt;In order to issue a ticket for a specific service, the service itself must be registered in Active Directory. A Service Principal Name is registered for each service/address/port combination and associated to a specific machine.&lt;/p&gt;
&lt;p&gt;Kerberos relies heavily on infrastructure components. The first is the KDC dedicated to Kerberos, and the second is Active Directory, which is the authentication source.&lt;/p&gt;
&lt;h1&gt;Authentication, as of Today&lt;/h1&gt;
&lt;p&gt;Both NTLM and Kerberos are widely used in the corporate world, where all the services are consumed in the local (or wider) network. With the advent of the cloud and other Software as a Service (SaaS), many resources are located outside the organization. Kerberos, which depends upon corporate components, cannot be used outside the organization, except if system administrators wants to open what is usually known as a security breaches.&lt;/p&gt;
&lt;p&gt;As always, security is a challenge. The challenge is even greater when there is a mix of on-premise and online services. To address that, a new way of authentication called Federated Identity is now widely used. &lt;a href="http://www.microsoft.com/en-ca/download/details.aspx?id=28971"&gt;Office 365&lt;/a&gt; can use Federated Identity, as an example.&lt;/p&gt;
&lt;h2&gt;Federated Identity Basics&lt;/h2&gt;
&lt;p&gt;Federated authentication is a superset of the well-known SSO (Single Sign On). It&amp;rsquo;s a superset because it is not only limited to authentication, but also includes additional information. The authentication part is usually known as Federated Authentication.&lt;/p&gt;
&lt;h3&gt;Standards&lt;/h3&gt;
&lt;p&gt;Many standards can enable Federated Identity as of now, such as OpenID and OAuth. The main difference between these two cases is that the first is for Authentication, and the later is for Authorization.&lt;/p&gt;
&lt;p&gt;As an example, if a user wants to access a website, OpenID is the standard that will enable the user to validate that his or her identity. If, on the other hand, the user wants to upload photos to a website, OAuth will be the standard that authorizes the user to access this specific functionality.&lt;/p&gt;
&lt;h3&gt;The Microsoft Take on Federated Identity&lt;/h3&gt;
&lt;p&gt;To enable those standards, there is a &lt;a href="http://msdn.microsoft.com/en-ca/security/aa570351.aspx"&gt;complete set of components&lt;/a&gt; under Identity Management. The most common ones are ADFS, along with the not-so-new foundation available that is addressing Identity in general, called &lt;a href="http://blogs.msdn.com/b/vbertocci/archive/2010/06/23/all-will-be-revealed-7-hours-recordings-from-the-wif-workshops.aspx"&gt;Windows Identity Foundation (WIF)&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Active Directory Federation Services (ADFS)&lt;/h4&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-22-metablogapi/0842.clip_5F00_image003_5F00_1CA72817.gif"&gt;&lt;img style="margin: 20px; border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="clip_image003" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-22-metablogapi/2677.clip_5F00_image003_5F00_thumb_5F00_151BB8AA.gif" alt="clip_image003" width="332" height="247" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;em&gt;Source: &lt;a href="http://msdn.microsoft.com/en-us/library/aa480245.aspx"&gt;The .NET Developer's Guide to Identity&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc736690(v=ws.10).aspx"&gt;ADFS&lt;/a&gt; is based on the WS-* specifications, which are industry standards for security from the W3C. Those standards include WS-Addressing, WS-Discovery, WS-Federation, WS-Policy, WS-Security and WS-Trust.&lt;/p&gt;
&lt;p&gt;ADFS use a &lt;a href="http://msdn.microsoft.com/en-us/library/ff359101.aspx"&gt;claim-based approach&lt;/a&gt;. The simplest way of explaining that is: you trust the claim received if you already trust the issuer. There are some excellent &lt;a href="http://download.microsoft.com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/Claims-Based%20Identity%20for%20Windows.pdf"&gt;whitepapers&lt;/a&gt; on the subject.&lt;/p&gt;
&lt;h4&gt;Access Control Service&lt;/h4&gt;
&lt;p&gt;On the other hand, you might want to use external services to authenticate your user. Windows Account (Live Id), Facebook and Google can be used as Token Issuers for a claim-based system. To leverage all those Token Services without modifying applications, the Access Control Service (ACS) can be used as a token provider. Afterward, ACS can be configured to accept Tokens from many providers and can perform translation and transformation of tokens so that applications can expect the same format. Obviously, Microsoft offer a great ACS in the cloud called &lt;a href="http://msdn.microsoft.com/library/gg429786.aspx"&gt;Windows Azure Active Directory Access Control&lt;/a&gt;. It can be used by &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/access-control/"&gt;any application&lt;/a&gt;, and can authenticate users from identity providers like Windows Live Id, Google, Yahoo, Facebook and any ADFS 2.0 servers.&lt;/p&gt;
&lt;p&gt;A great (and free) book is available online concerning MSDN: &lt;a href="http://msdn.microsoft.com/en-us/library/ff423674.aspx"&gt;Federated Identity with Multiple Partners and Windows Azure Access Control Service&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;From the unsecured LANMAN to the federation-enabled Azure ACS, the objective remains to give the appropriate rights to the appropriate persons. We began by trusting the users with LANMAN/NTLM; afterwards, we trusted servers using delegation in Kerberos; now, we are trusting &amp;ldquo;trusters&amp;rdquo; with Federated Authentication.&lt;/p&gt;
&lt;p&gt;Even though many of those security mechanisms are secure enough, users are still authenticating with passwords. What will be the next step? Some are saying that &lt;a href="http://research.microsoft.com/apps/pubs/default.aspx?id=155648"&gt;two-factor authentication&lt;/a&gt; will be a solution. Some are already trying &lt;a href="https://www.phonefactor.com/microsoft.shtml"&gt;hardware based authentication mechanisms&lt;/a&gt;, and there are already some alternative passwords, such as &lt;a href="http://windows.microsoft.com/en-CA/windows-8/picture-passwords#1TC=t1"&gt;gesture on the Surface&lt;/a&gt;. With the arrival of the augmented reality trend, and the &lt;a href="http://www.microsoft.com/office/vision/"&gt;future vision&lt;/a&gt; from Microsoft, no one can tell what will happen next.&lt;/p&gt;
&lt;p&gt;-f.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10396615" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/fchapleau/archive/tags/Security/">Security</category></item><item><title>The Value Style</title><link>http://blogs.msdn.com/b/fchapleau/archive/2013/01/13/the-value-style.aspx</link><pubDate>Sun, 13 Jan 2013 17:40:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10384553</guid><dc:creator>Frederick Chapleau [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/fchapleau/rsscomments.aspx?WeblogPostID=10384553</wfw:commentRss><comments>http://blogs.msdn.com/b/fchapleau/archive/2013/01/13/the-value-style.aspx#comments</comments><description>&lt;p&gt;Today, software developers have a slew of alternatives. Many technologies are available, and making the right choice is always a challenge. Azure? WCF/.NET? Web 2.0? … Access? Why choose one architecture rather than another? All too often, I find people wielding the &amp;quot;&lt;a href="http://en.wikipedia.org/wiki/Law_of_the_instrument" target="_blank"&gt;Golden Hammer&lt;/a&gt;&amp;quot; – the tool of greatest familiarity. When you really understand a technology, you can always find an argument to use it. Ultimately, the chances are high that the familiar tool will be the tool of choice.&lt;/p&gt;  &lt;h1&gt;A simple scenario&lt;/h1&gt;  &lt;p&gt;In this article, I will describe different styles in a scenario where a user is attempting to generate a report based on two pieces of information, Persons and Matches. The user consults an Excel Spreadsheet that contains values for each Person and for each Match like this:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="355" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="80"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;&lt;strong&gt;Match 1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;&lt;strong&gt;Match 2&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;&lt;strong&gt;Match 3&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="69"&gt;&lt;strong&gt;Match 4&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="80"&gt;&lt;strong&gt;Person 1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;4&lt;/td&gt;        &lt;td valign="top" width="68"&gt;3&lt;/td&gt;        &lt;td valign="top" width="68"&gt;8&lt;/td&gt;        &lt;td valign="top" width="69"&gt;5&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="80"&gt;&lt;strong&gt;Person 2&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;1&lt;/td&gt;        &lt;td valign="top" width="68"&gt;7&lt;/td&gt;        &lt;td valign="top" width="68"&gt;4&lt;/td&gt;        &lt;td valign="top" width="69"&gt;2&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="80"&gt;&lt;strong&gt;Person 3&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;9&lt;/td&gt;        &lt;td valign="top" width="68"&gt;10&lt;/td&gt;        &lt;td valign="top" width="68"&gt;5&lt;/td&gt;        &lt;td valign="top" width="69"&gt;8&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="80"&gt;&lt;strong&gt;Person 4&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="68"&gt;6&lt;/td&gt;        &lt;td valign="top" width="68"&gt;8&lt;/td&gt;        &lt;td valign="top" width="68"&gt;10&lt;/td&gt;        &lt;td valign="top" width="69"&gt;7&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;A report for each Person with the Matches and the associated scores would look like this:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="159" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;strong&gt;Person 1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="72"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;strong&gt;Match 1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="72"&gt;4&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;strong&gt;Match 2&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="72"&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;strong&gt;Match 3&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="72"&gt;8&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;strong&gt;Match 4&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="72"&gt;5&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This report would be customized to insert images, add colors, etc. In addition, this report should be in PDF format.&lt;/p&gt;  &lt;h1&gt;Styles&lt;/h1&gt;  &lt;p&gt;Let’s now consider different style approaches to the above scenario.&lt;/p&gt;  &lt;h2&gt;Geek Style&lt;/h2&gt;  &lt;p&gt;The geek style will most likely entail an Azure, MVC, JSON-enabled application. The developer’s biases will revolve around new technologies and the &lt;a href="http://www.windowsazure.com/en-us/pricing/calculator/" target="_blank"&gt;low cost of deploying&lt;/a&gt; this kind of software in the cloud to avoid maintaining infrastructure.&lt;/p&gt;  &lt;p&gt;In the end, this is a good choice, and the client will not have to refactor the application for a couple of years. However, not all clients are technology savvy, and they may not want to rely on technologies that require a Geek approach to implement any changes. For a simple application, after all, this may be a little excessive. I call that &lt;a href="http://www.codinghorror.com/blog/2004/12/gold-plating.html"&gt;Programmer’s Golden Plating&lt;/a&gt;.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;h2&gt;Web 2.0 Style&lt;/h2&gt;  &lt;p&gt;The Web 2.0 style developer will also propose a recent approach without going too far or deeply into the most recent technologies – maybe just a website using ASP.Net with some Ajax callbacks to make it more responsive, along with some third-party controls to avoid re-inventing the wheel.&lt;/p&gt;  &lt;p&gt;There is no problem with this approach (like the last one), except that the client must buy hosting for the ASP.Net website, and must rely on a developer to make changes. Is that really required for the scope of this application? Surely not.&lt;/p&gt;  &lt;h2&gt;OLE Style&lt;/h2&gt;  &lt;p&gt;The OLE style is ruled by the &amp;quot;it’s always worked this way&amp;quot; mode of thinking. The developer will propose a client-server application, possibly based on recent technologies such as SQL Server Express and a fat client in .NET. This architecture is simple and straightforward, with almost no infrastructure component.&lt;/p&gt;  &lt;p&gt;The OLE approach could work, and the probability of finding resources to maintain those technologies is quite high. However, the client’s actual needs may only include the ability to modify a report or modify some screens. Is a full-fledged application really required for a three tables application?&lt;/p&gt;  &lt;h2&gt;MOS Style&lt;/h2&gt;  &lt;p&gt;The MOS style developer (where MOS stand for &lt;a href="http://www.microsoft.com/learning/en/us/mos-certification.aspx"&gt;Microsoft Office Specialist&lt;/a&gt;) is an Office power user who knows the ins and outs of development using Office products. This variety of developer may suggest an Access Database, with a form for data entry and a reporting functionality.&lt;/p&gt;  &lt;p&gt;In this case, there are no infrastructure components, and the user can modify every bit of information in the database. The user can even go as far as modifying the report or adding a new one. While it’s not comparable to the aforementioned styles, it is a hybrid between the current implementation and the development of a compiled application.&lt;/p&gt;  &lt;p&gt;Maybe that is the satisfactory solution to the need expressed by the client.&lt;/p&gt;  &lt;h2&gt;Value Style&lt;/h2&gt;  &lt;p&gt;The value style is an entirely different approach to the problem. It is exactly what it sounds like – a focus on the real value of the application. Sorry people, the software is not the real value here. The value is always what the user can &lt;strong&gt;achieve&lt;/strong&gt; using that software.&lt;/p&gt;  &lt;p&gt;So what is the real value in this scenario? It’s to create a &lt;strong&gt;printable&lt;/strong&gt; format of &lt;strong&gt;transposed&lt;/strong&gt; information &lt;strong&gt;automatically&lt;/strong&gt;. All the other styles can achieve that, but value style makes no mention of stability, performance, centralization or technology. So, what is the more straightforward way of delivering the value in this case?&lt;/p&gt;  &lt;p&gt;Right now, it’s an excel sheet. We can print Excel sheets. We can transpose information (the paste options are &lt;a href="http://support.microsoft.com/kb/291358"&gt;pretty extensive&lt;/a&gt;). And we can automate things using macros.&lt;/p&gt;  &lt;p&gt;One hour later and the solution is delivered – an Excel workbook with a macro that generates sheets based on a &lt;em&gt;template&lt;/em&gt; sheet using the transpose paste option of Excel. After executing the macro, the client only has to use the &lt;a href="http://office.microsoft.com/en-us/excel-help/save-as-pdf-HA010354239.aspx" target="_blank"&gt;standard save options of Excel 2013&lt;/a&gt; to save it in PDF format.&lt;/p&gt;  &lt;h1&gt;Final Note&lt;/h1&gt;  &lt;p&gt;Certainly, this is a scenario with an obvious implementation that could be discovered in less than 15 min. I am not saying that any of these technologies are better than the other, and I am definitely not saying that Excel is the solution for everything. The point here is to focus more on the value and less on the implementation. We should always deliver quality software. &lt;a href="http://en.wikipedia.org/wiki/ISO/IEC_9126" target="_blank"&gt;We should always think about all &amp;quot;-ty&amp;quot;.&lt;/a&gt; However, we should also think about the real value in what we do.&lt;/p&gt;  &lt;p&gt;A simple way of finding value begins with asking a simple question:&lt;/p&gt;  &lt;p&gt;&amp;quot;What is the benefit of using software instead of using pen and paper?&amp;quot;&lt;/p&gt;  &lt;p&gt;-f.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10384553" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/fchapleau/archive/tags/Architecture/">Architecture</category></item></channel></rss>