{"id":310,"date":"2011-04-18T09:28:00","date_gmt":"2011-04-18T18:28:00","guid":{"rendered":"http:\/\/www.cloudidentity.com\/blog\/2011\/04\/18\/acs-extensions-for-umbraco-part-ii-social-providers\/"},"modified":"2011-04-18T09:28:00","modified_gmt":"2011-04-18T18:28:00","slug":"acs-extensions-for-umbraco-part-ii-social-providers","status":"publish","type":"post","link":"https:\/\/www.cloudidentity.com\/blog\/2011\/04\/18\/acs-extensions-for-umbraco-part-ii-social-providers\/","title":{"rendered":"ACS Extensions for Umbraco &#8211; Part II: Social Providers"},"content":{"rendered":"<p>Welcome to the second installment of the series on the ACS Extensions for Umbraco, part of the big ACS launch wave!<\/p>\n<p>This time I am going to assume that you succesfully installed the Extensions on your Umbraco instance, and you want to start accepting members from social &amp; web identity providers. You\u2019ll see how easy it is to stitch together the sign-up and sign-in machinery, I\u2019d estimate 3 mins max, and how we integrated the classic email verification flow into our invitation engine.<\/p>\n<p>As usual, I am going to paste here what we wrote in the docs. However, remember that one of the big success factors for Umbraco is its great flexibility: in the same spirit, feel free to tinker with the Extensions as well to add any extra feature you may need. Few suggestions: bulk invitations, self-registering pages, etc.<\/p>\n<h3>Access Control Service (ACS) Extensions for Umbraco<\/h3>\n<p align=\"center\"><a href=\"http:\/\/channel9.msdn.com\/Shows\/Identity\/ACS-Extensions-for-Umbraco-2-SignIn-and-Authorization-for-Social-Members\"><img loading=\"lazy\" decoding=\"async\" title=\"social-video\" alt=\"social-video\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/1031.social_2D00_video_5F00_6E0EF311.png\" width=\"300\" height=\"225\" \/>       <br \/>&#8216;Click here for a video walkthrough of this tutorial&#8217; <\/a><\/p>\n<p>One of the main features of the ACS Extensions is the ability to add members to your Umbraco web site directly from social providers: people will be able to sign up to your web site without having to create a new account and remember a new password, an you will not need to maintain credentials, field calls for lost passwords and so on.<\/p>\n<p>The ACS Extensions accomplish this by providing you with a workflow for inviting users via a simple email verification system. The ACS Extensions also provide you some UI macro which you can use for creating sign-in and sign-up pages in just few clicks. The sign-in and sign-up mechanisms are integrated with the role-based security supported natively by Umbraco, the member groups.<\/p>\n<p>In the section below we will walk you through the process of enabling classic sign-in and sign-up authentication features in your web site: this will help you to understand how the various components of the ACS Extensions work, so that you will be able to devise your own flow.<\/p>\n<p>&#160;<\/p>\n<p> <a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_Members_Groups_1\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_Some_Sample\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Toc290019592\"><\/a>  <\/p>\n<h4>Create Some Sample Members Groups<\/h4>\n<p>In order to add authentication capabilities to your Umbraco web site, you need to subdivide your users in member groups.<\/p>\n<ol>\n<li>Navigate to the Umbraco back-end and login as the user account you created during the configuration wizard. <\/li>\n<li>Go to <b>Members<\/b> section and right-click on <b>Members-&gt;Members Groups<\/b> node and select <b>Create<\/b>. <\/li>\n<li>Enter the <b>Name<\/b> of the member group and then click on <b>Create<\/b> button. For this tutorial we will need the \u201cPower Members\u201d group.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7875.33698430_2D00_31ef_2D00_4fb1_2D00_a5b4_2D00_98e6f8f3f0b1_5F00_40AD5D41.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"33698430-31ef-4fb1-a5b4-98e6f8f3f0b1\" border=\"0\" alt=\"33698430-31ef-4fb1-a5b4-98e6f8f3f0b1\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7875.33698430_2D00_31ef_2D00_4fb1_2D00_a5b4_2D00_98e6f8f3f0b1_5F00_40AD5D41.png\" width=\"589\" height=\"157\" \/><\/a><\/p>\n<p><b>Figure 22<\/b> &#8211; <i>Create Member Group popup dialog<\/i><\/p>\n<\/li>\n<li>Repeat the process and create a new member group called \u201cCommon Members\u201d. In this tutorial we will assign \u201cCommon Members\u201d to everybody. \u201cPower Members\u201d will be reserved to those members which need access to restricted pages. <\/li>\n<\/ol>\n<p> <a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Use_the_Windows\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_Basic_Web\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_basic_content\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Integrate_the_Access\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_login_page\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_Login_and\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Toc290019593\"><\/a>  <\/p>\n<h4>Create Login and Error Pages <\/h4>\n<p>In order to enable members to sign in using social providers, you need to add to your web site a login page that will display the appropriate choices, that is to say the list of social providers you selected when you set up the ACS Extensions. Thanks to the macro provided by the extensions, this task is very straightforward.<\/p>\n<ol>\n<li>From the <b>Content<\/b> section of the management UI, click on the \u201cSimple Web Site\u201d (or other \u201cHomepage\u201d) node at the top of the <b>Content<\/b> tree. <\/li>\n<li>Right-click on the Homepage node and select <b>Create<\/b> to add a new page in your web site. <\/li>\n<li>Write \u201cLogin\u201d in the Name field and click on <b>Create<\/b> button.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/3583.06e7bf11_2D00_6cbb_2D00_4b71_2D00_b83b_2D00_ae178923d21f_5F00_2AE374E4.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"06e7bf11-6cbb-4b71-b83b-ae178923d21f\" border=\"0\" alt=\"06e7bf11-6cbb-4b71-b83b-ae178923d21f\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/3583.06e7bf11_2D00_6cbb_2D00_4b71_2D00_b83b_2D00_ae178923d21f_5F00_2AE374E4.png\" width=\"624\" height=\"326\" \/><\/a><\/p>\n<p><b>Figure 23<\/b> &#8211; <i>Create Content popup dialog<\/i><\/p>\n<\/li>\n<li>Go to the right panel to <b>edit<\/b> the page. <\/li>\n<li>In the <b>Content<\/b> tab add a welcome sentence (e.g. \u201cWelcome back! Please sign in with the provider you used for registering among the ones below\u201d) <\/li>\n<li>Click on <b>Insert Macro<\/b> button from toolbar.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/6811.9fe4895e_2D00_dce8_2D00_48c2_2D00_9455_2D00_3ceeb2384d9a_5F00_4306DF3F.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"9fe4895e-dce8-48c2-9455-3ceeb2384d9a\" border=\"0\" alt=\"9fe4895e-dce8-48c2-9455-3ceeb2384d9a\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/6811.9fe4895e_2D00_dce8_2D00_48c2_2D00_9455_2D00_3ceeb2384d9a_5F00_4306DF3F.png\" width=\"95\" height=\"47\" \/><\/a><\/p>\n<p><b>Figure 24<\/b> &#8211; <i>Insert Macro button<\/i><\/p>\n<\/li>\n<li>Select the <b>acsExtensions.loginMacro<\/b>. That macro contains the necessary logic for rendering links to all the social providers (and other identity providers, more about that later), so that the user can click on the provider of choice and be redirected to authenticate there. <b>acsExtensions.LoginMacro<\/b> provides username and password fields as well, in case you want to support the traditional Umbraco member management side by side with the new federated authentication features.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/2110.47f9d404_2D00_3c42_2D00_4c2e_2D00_a1d2_2D00_090558fb0f12_5F00_5E3F3840.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"47f9d404-3c42-4c2e-a1d2-090558fb0f12\" border=\"0\" alt=\"47f9d404-3c42-4c2e-a1d2-090558fb0f12\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/2110.47f9d404_2D00_3c42_2D00_4c2e_2D00_a1d2_2D00_090558fb0f12_5F00_5E3F3840.png\" width=\"589\" height=\"185\" \/><\/a><\/p>\n<p><b>Figure 25<\/b> &#8211; <i>Insert macro popup dialog<\/i><\/p>\n<\/li>\n<li>Go to the properties tab and check <b>Hide in navigation<\/b>, to prevent the page from appearing in the navigation bar. <\/li>\n<li>Click on the <b>Save<\/b><b>and<\/b><b>Publish<\/b> button.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/6724.5ff7968a_2D00_9391_2D00_4732_2D00_9d88_2D00_0975d085dbd4_5F00_48754FE3.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"5ff7968a-9391-4732-9d88-0975d085dbd4\" border=\"0\" alt=\"5ff7968a-9391-4732-9d88-0975d085dbd4\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/6724.5ff7968a_2D00_9391_2D00_4732_2D00_9d88_2D00_0975d085dbd4_5F00_48754FE3.png\" width=\"624\" height=\"146\" \/><\/a><\/p>\n<p><b>Figure 26<\/b> &#8211; <i>Login Page Created<\/i><\/p>\n<\/li>\n<li>Now that you have a login page, you need an error page to display in case something goes wrong. Right-click on the Homepage node and select <b>Create<\/b> once again. <\/li>\n<li>Enter \u201cUnauthorized\u201d in the <b>Name<\/b> field and click on <b>Create<\/b>. <\/li>\n<li>Go to the right panel to <b>edit<\/b> the page. <\/li>\n<li>In the <b>Content<\/b> tab add a suitable error message (e.g. \u201cYou are not authorized to access the page you requested.\u201d) <\/li>\n<li>Go to the properties tab and check <b>Hide in navigation<\/b>. <\/li>\n<li>Click on the <b>Save<\/b><b>and<\/b><b>Publish<\/b> button.\n<p>You now have all the necessary assets to authenticate members: the next step is to wire them up to the content you want to protect.<\/p>\n<\/li>\n<\/ol>\n<p> <a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Restrict_access_to\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Toc290019594\"><\/a>  <\/p>\n<h4>Restrict Access to Content<\/h4>\n<p>Umbraco supports role-based authorization as the access control method for its content pages. When you elect to use role-based security with a given page, Umbraco will ask you to specify one login and one error page. The ACS Extensions snap in that mechanism by using a login page containing its macro, just like the page you created in the former task. In the steps below we will restrict access to one page in order to demonstrate the process.<\/p>\n<ol>\n<li>From the <b>Content<\/b> section right-click on the area (or page) that you want to secure and select <b>Public Access<\/b>. In this tutorial we are protecting the page \u201cGo Further\u201d.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/0042.7ddff6b6_2D00_4af9_2D00_461d_2D00_a892_2D00_139b0ab1e29a_5F00_758A3CB1.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"7ddff6b6-4af9-461d-a892-139b0ab1e29a\" border=\"0\" alt=\"7ddff6b6-4af9-461d-a892-139b0ab1e29a\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/0042.7ddff6b6_2D00_4af9_2D00_461d_2D00_a892_2D00_139b0ab1e29a_5F00_758A3CB1.png\" width=\"320\" height=\"475\" \/><\/a><\/p>\n<p><b>Figure 27<\/b> &#8211; <i>Public access menu item<\/i><\/p>\n<\/li>\n<li>Choose the <b>Role based protection<\/b> option and click on <b>Select<\/b> button.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/3583.489c2c18_2D00_014d_2D00_4cab_2D00_87cc_2D00_06515c0d5f51_5F00_5BB60682.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"489c2c18-014d-4cab-87cc-06515c0d5f51\" border=\"0\" alt=\"489c2c18-014d-4cab-87cc-06515c0d5f51\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/3583.489c2c18_2D00_014d_2D00_4cab_2D00_87cc_2D00_06515c0d5f51_5F00_5BB60682.png\" width=\"543\" height=\"261\" \/><\/a><\/p>\n<p><b>Figure 28<\/b> &#8211; <i>Public access popup dialog | Choose how to restrict access to this page <\/i><\/p>\n<\/li>\n<li>You\u2019ll be presented with a dialog which allow you to choose which members group should have access to this page. Select the <b>Power members<\/b> and use the right arrow button to move it to the list on the right. <\/li>\n<li>In the <b>Login Page<\/b> area click <b>Choose\u2026<\/b> to specify the page that Umbraco will display in case one unauthenticated user attempts to access the specified page. Pick the Login page you created earlier.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/1121.24dc3124_2D00_142d_2D00_4cb4_2D00_9fda_2D00_92aa4d88ec15_5F00_7AF8AD55.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"24dc3124-142d-4cb4-9fda-92aa4d88ec15\" border=\"0\" alt=\"24dc3124-142d-4cb4-9fda-92aa4d88ec15\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/1121.24dc3124_2D00_142d_2D00_4cb4_2D00_9fda_2D00_92aa4d88ec15_5F00_7AF8AD55.png\" width=\"364\" height=\"326\" \/><\/a><\/p>\n<p><b>Figure 29<\/b> &#8211; <i>Public access popup dialog | Role based protection<\/i><\/p>\n<\/li>\n<li>Repeat the process Error Page area. This time, pick the Unauthorized page created earlier.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/4276.6df61418_2D00_4fbb_2D00_443c_2D00_a8b1_2D00_7818260bb417_5F00_652EC4F8.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"6df61418-4fbb-443c-a8b1-7818260bb417\" border=\"0\" alt=\"6df61418-4fbb-443c-a8b1-7818260bb417\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/4276.6df61418_2D00_4fbb_2D00_443c_2D00_a8b1_2D00_7818260bb417_5F00_652EC4F8.png\" width=\"543\" height=\"442\" \/><\/a><\/p>\n<p><b>Figure 30<\/b> &#8211; <i>The end result in the public access popup dialog | Role based protection<\/i><\/p>\n<\/li>\n<li>Click <b>Update<\/b> and close the dialog <\/li>\n<li>At this point we are ready to test the sign-in page. Navigate to your Umbraco web site\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/6646.b8b21e2e_2D00_1690_2D00_4d14_2D00_8877_2D00_51b4a91519c2_5F00_1D6D3C11.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"b8b21e2e-1690-4d14-8877-51b4a91519c2\" border=\"0\" alt=\"b8b21e2e-1690-4d14-8877-51b4a91519c2\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/6646.b8b21e2e_2D00_1690_2D00_4d14_2D00_8877_2D00_51b4a91519c2_5F00_1D6D3C11.png\" width=\"519\" height=\"350\" \/><\/a><\/p>\n<p><b>Figure 31<\/b> &#8211; <i>The Umbraco web site home page<\/i><\/p>\n<\/li>\n<li>Click on <b>Go further<\/b> in the navigation bar. You will be redirected to the login page, as shown below. The list of the social providers is automatically obtained from ACS; the username and password fields are provided for compatibility with the native Umbraco membership management system\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7206.fe68d691_2D00_e998_2D00_4d7b_2D00_865f_2D00_b75b09ae689e_5F00_3C43AFEF.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"fe68d691-e998-4d7b-865f-b75b09ae689e\" border=\"0\" alt=\"fe68d691-e998-4d7b-865f-b75b09ae689e\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7206.fe68d691_2D00_e998_2D00_4d7b_2D00_865f_2D00_b75b09ae689e_5F00_3C43AFEF.png\" width=\"592\" height=\"504\" \/><\/a><\/p>\n<p><b>Figure 32<\/b> &#8211; <i>The login page<\/i><\/p>\n<p>The login mechanism works, but at this point you don\u2019t have any registered members yet. In the next task you will create the activation page that invited members will use for signing up to your Umbraco instance.<\/p>\n<\/li>\n<\/ol>\n<p> <a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Add_activation_page\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Create_Activation_Pages\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Toc290019595\"><\/a>  <\/p>\n<h4>Create Activation Pages for Signing Up Social Members<\/h4>\n<p>In order to register new members from social providers, you need to create some pages that will allow them to sign up to your web site using their account of choice. In a later task you will learn how to invite users; in the steps below you will see how to build the assets that will support the member activation experience.<\/p>\n<p>The infrastructure is pretty simple: you need one Activation page, which constitutes the landing page for new members who have been just invited to join the site; and one Signup page, which they will use to associate their account from their social provider of choice with the account on your web site.<\/p>\n<ol>\n<li>Using the procedure you have learned in the former tasks, add a new page in the content tree and call it <b>Sign Up<\/b>. <\/li>\n<li>Go to the right panel to <b>edit<\/b> the page. <\/li>\n<li>In the <b>Content<\/b> tab add a sentence which will clarify the purpose of the page (e.g. \u201cPlease choose from the list below which social provider account you want to use for registering with this web site\u201d) <\/li>\n<li>Click on <b>Insert Macro<\/b> button from toolbar. <\/li>\n<li>Select the <b>acsExtensions.federatedloginMacro<\/b>. This macro behaves in the same way as the <b>acsExtension.loginMacro<\/b> you used when creating the sign in page, with the only difference that the username and password UI elements are omitted: in order to sign up with a social provider account, those elements would not be needed.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/2133.8fc20176_2D00_3c85_2D00_4e7b_2D00_9597_2D00_1c5e5d67c6a4_5F00_3B6B4A05.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"8fc20176-3c85-4e7b-9597-1c5e5d67c6a4\" border=\"0\" alt=\"8fc20176-3c85-4e7b-9597-1c5e5d67c6a4\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/2133.8fc20176_2D00_3c85_2D00_4e7b_2D00_9597_2D00_1c5e5d67c6a4_5F00_3B6B4A05.png\" width=\"502\" height=\"157\" \/><\/a><\/p>\n<p><b>Figure 33<\/b> &#8211; <i>Insert the federated login macro to list all configured social providers login links<\/i><\/p>\n<\/li>\n<li>Go to the properties tab and check <b>Hide in navigation<\/b>, to avoid the page from appearing in the navigation bar. <\/li>\n<li>Click on the <b>Save<\/b><b>and<\/b><b>Publish<\/b> button. <\/li>\n<li>The Sign Up page will be used to secure the invitations landing page. Create a new page and call it <b>activation<\/b>.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/3515.note_5F00_166D898C.gif\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"note\" border=\"0\" alt=\"note\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/3515.note_5F00_166D898C.gif\" width=\"10\" height=\"10\" \/><\/a><em>Note:<\/em><\/p>\n<p><em>The default name and path for the activation page is <b>\u201c~\/activation\u201d<\/b>. If you keep all the defaults it is important that you call the page \u201cactivation\u201d, or the invitation mechanism will fail (see the next task).           <br \/>If you want to change the page name you use here to toehr than \u201cactivation\u201d, you need to update the web.config file of your Umbraco web site (appSettings -&gt; ActivationPage).<\/em><\/p>\n<\/li>\n<li>Go to the right panel to <b>edit<\/b> the page. <\/li>\n<li>In the <b>Content<\/b> tab write an activation confirmation text like: <i>\u201cYour account was activated successfully!\u201d<\/i>\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/4572.0f2f2870_2D00_1566_2D00_469e_2D00_a8e7_2D00_58641e9df6b6_5F00_750DE3EF.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"0f2f2870-1566-469e-a8e7-58641e9df6b6\" border=\"0\" alt=\"0f2f2870-1566-469e-a8e7-58641e9df6b6\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/4572.0f2f2870_2D00_1566_2D00_469e_2D00_a8e7_2D00_58641e9df6b6_5F00_750DE3EF.png\" width=\"537\" height=\"101\" \/><\/a><\/p>\n<p><b>Figure 34<\/b> &#8211; <i>Edit activation page<\/i><\/p>\n<\/li>\n<li>Go to the properties tab and check <b>Hide in navigation<\/b>, to avoid the page from appearing in the navigation bar. <\/li>\n<li>Click on the <b>Save<\/b><b>and<\/b><b>Publish<\/b> button. <\/li>\n<li>Using the procedure you\u2019ve learned in the Restrict Access to Content task, set the public access for the <b>activation<\/b> page to Role based protection. Assing <b>Common Members<\/b> as the member group authorized to see the page, set the <b>Sign Up<\/b> page as the login page and the <b>Unauthorized<\/b> page as the Error page.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7823.3d3ad8ae_2D00_f5a6_2D00_44e5_2D00_b9cc_2D00_ba0a623adcce_5F00_6C3DDBA3.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"3d3ad8ae-f5a6-44e5-b9cc-ba0a623adcce\" border=\"0\" alt=\"3d3ad8ae-f5a6-44e5-b9cc-ba0a623adcce\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7823.3d3ad8ae_2D00_f5a6_2D00_44e5_2D00_b9cc_2D00_ba0a623adcce_5F00_6C3DDBA3.png\" width=\"406\" height=\"366\" \/><\/a><\/p>\n<p><b>Figure 35<\/b> &#8211; <i>Permissions for the activation page<\/i><\/p>\n<\/li>\n<li>Click on <b>Save<\/b> or <b>Publish<\/b> button.\n<p>At this point you have everything you need to start inviting members from social providers.<\/p>\n<\/li>\n<\/ol>\n<p> <a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Add_and_manage\"><\/a><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_Toc290019596\"><\/a>  <\/p>\n<h4>Add and Manage Social Members<\/h4>\n<p>With the <b>ACS Extensions<\/b> you can add members directly from social providers such as Facebook, Windows Live ID, Google and Yahoo. The sign in and sign up pages you created in the two former steps provide the user experience elements to support the registration and authentication flow. In this task you will learn how to use the administrative features of the ACS Extensions to invite one new member. You will discover that the process is practically the same of creating traditional members, minus the pain of managing credentials.<\/p>\n<ol>\n<li>Go to <b>Members<\/b> section and right-click on <b>Members-&gt;Members<\/b> node and select <b>Create<\/b>.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7725.cf183863_2D00_a85b_2D00_4a1c_2D00_b09a_2D00_abac13340083_5F00_12338BFA.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"cf183863-a85b-4a1c-b09a-abac13340083\" border=\"0\" alt=\"cf183863-a85b-4a1c-b09a-abac13340083\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7725.cf183863_2D00_a85b_2D00_4a1c_2D00_b09a_2D00_abac13340083_5F00_12338BFA.png\" width=\"329\" height=\"136\" \/><\/a><\/p>\n<p><b>Figure 36<\/b> &#8211; <i>Create Member<\/i><\/p>\n<\/li>\n<li>Choose the <b>Social Member<\/b> type, a special type added by the ACS Extensions. Complete the login name and the email fields and click on <b>Create<\/b> button. Make sure to use an working, actual email address as the member will need access to it in order to sign up.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7713.1f721859_2D00_7ec0_2D00_42fd_2D00_85be_2D00_83cee4da6386_5F00_1C187D65.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"1f721859-7ec0-42fd-85be-83cee4da6386\" border=\"0\" alt=\"1f721859-7ec0-42fd-85be-83cee4da6386\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7713.1f721859_2D00_7ec0_2D00_42fd_2D00_85be_2D00_83cee4da6386_5F00_1C187D65.png\" width=\"488\" height=\"289\" \/><\/a><\/p>\n<p><b>Figure 37<\/b> &#8211; <i>The Create Member popup dialog<\/i><\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/0385.note1_5F00_62293A78.gif\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"note[1]\" border=\"0\" alt=\"note[1]\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/0385.note1_5F00_62293A78.gif\" width=\"10\" height=\"10\" \/><\/a><em>Note:<\/em><\/p>\n<p><em><b>Note<\/b>: As soon as you hit the Create button, the ACS Extensions create one invitation mail and send it to the user (using the SMTP you configured in the setup). That invitation contains a specially crafted activation link, which the member can use to associate his social account of choice with your web site using the activation assets you created in the former step.           <br \/>If you want to modify the template of the invitation email, you can do when creating a member from within the Create Member Dialog.           <br \/>The newly created member has some extra properties in respect to the default Umbraco member: one flag reporting if the invitation was sent, another if the account has been activated (false at the beginning, it flips when the user successfully signs up) and from which identity provider he is coming from (gets a value at activation time, according to the member\u2019s choice).<\/em><\/p>\n<\/li>\n<li>In the right panel you can assign the newly created member to the web site\u2019s member groups. For the purposes of this tutorial, add the member to the <b>Common Members<\/b> group.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/6648.bf576385_2D00_6166_2D00_403c_2D00_abae_2D00_f768ea959cbf_5F00_6EB6E794.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"bf576385-6166-403c-abae-f768ea959cbf\" border=\"0\" alt=\"bf576385-6166-403c-abae-f768ea959cbf\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/6648.bf576385_2D00_6166_2D00_403c_2D00_abae_2D00_f768ea959cbf_5F00_6EB6E794.png\" width=\"588\" height=\"422\" \/><\/a><\/p>\n<p><b>Figure 38<\/b> &#8211; <i>Edit Member panel <\/i><\/p>\n<\/li>\n<li>Save the changes. <\/li>\n<\/ol>\n<p>Let\u2019s step for a moment in the shoes of the new member and see how the invitation and sign up experience looks like.<\/p>\n<p>The flow begins when the prospect member receives the invitation mail, as shown below.<\/p>\n<p><a href=\"\/WindowsAzure\/UmbracoACSExtensions0412\/docs\/html\/Readme.html\/html\/#\" name=\"_GoBack\"><\/a><\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/3122.4cd1f742_2D00_5aec_2D00_4bcc_2D00_93ee_2D00_132db2617fee_5F00_1FD62235.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"4cd1f742-5aec-4bcc-93ee-132db2617fee\" border=\"0\" alt=\"4cd1f742-5aec-4bcc-93ee-132db2617fee\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/3122.4cd1f742_2D00_5aec_2D00_4bcc_2D00_93ee_2D00_132db2617fee_5F00_1FD62235.png\" width=\"543\" height=\"341\" \/><\/a><\/p>\n<p><b>Figure 39<\/b> &#8211; <i>The default invitation mail <\/i><\/p>\n<p>As mentioned above, the invitation email template can be configured to fit your preferences.<\/p>\n<p>The URL has been constructed to trigger the activation process; the <b>ticketnumber<\/b> parameter is used for associating the member defined in Umbraco with this specific email verification transaction. <\/p>\n<p>Following the link, the prospect member will land on the activation page, which in turn will redirect to the Sign Up page.<\/p>\n<p><b>Figure 40<\/b> &#8211; <i>The Sign UpPage<\/i><\/p>\n<p>There the user can select the Identity Provider he wants to use for signing in the web site. That account will be mapped to the Social Member created in Umbraco, with all its properties (including the assigned roles). For the purpose of this tutorial, let\u2019s assume that the use picks Windows Live ID and successfully authenticates.<\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/4760.cbbebbaf_2D00_84a8_2D00_4a7d_2D00_acce_2D00_d2ac59712cf7_5F00_17724CDE.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"cbbebbaf-84a8-4a7d-acce-d2ac59712cf7\" border=\"0\" alt=\"cbbebbaf-84a8-4a7d-acce-d2ac59712cf7\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/4760.cbbebbaf_2D00_84a8_2D00_4a7d_2D00_acce_2D00_d2ac59712cf7_5F00_17724CDE.png\" width=\"438\" height=\"244\" \/><\/a><\/p>\n<p><b>Figure 41<\/b> &#8211; <i>Activation Completed<\/i><\/p>\n<p>As a result, Umbraco can finally serve the activation page.<\/p>\n<p>Now, you may remember from the earlier steps that the current member has been assigned to the Common Members group; that\u2019s not enough for accessing the <b>Go further<\/b> page, which you configure to be visible only to <b>Power Members<\/b>. If you click on Go further at this point, you will get redirected to the error page.<\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7725.b8d27ba5_2D00_094a_2D00_45f5_2D00_8fa9_2D00_e1965264e4a9_5F00_246C2CEF.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"b8d27ba5-094a-45f5-8fa9-e1965264e4a9\" border=\"0\" alt=\"b8d27ba5-094a-45f5-8fa9-e1965264e4a9\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7725.b8d27ba5_2D00_094a_2D00_45f5_2D00_8fa9_2D00_e1965264e4a9_5F00_246C2CEF.png\" width=\"437\" height=\"257\" \/><\/a><\/p>\n<p><b>Figure 42<\/b> &#8211; <i>Unauthorized <\/i><\/p>\n<ol>\n<li>Let\u2019s change the member groups settings for the member so that he can access the Go further page. Go back to the Member details in the backend and refresh the page. Notice that the <b>Is Activated<\/b> and <b>Identity Provider<\/b> fields have been updated.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/5165.c4d23abf_2D00_1fdf_2D00_4f65_2D00_9234_2D00_c19ef0e62c98_5F00_6A7CEA02.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"c4d23abf-1fdf-4f65-9234-c19ef0e62c98\" border=\"0\" alt=\"c4d23abf-1fdf-4f65-9234-c19ef0e62c98\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/5165.c4d23abf_2D00_1fdf_2D00_4f65_2D00_9234_2D00_c19ef0e62c98_5F00_6A7CEA02.png\" width=\"524\" height=\"337\" \/><\/a><\/p>\n<p><b>Figure 43<\/b> &#8211; <i>Updated Member Details<\/i><\/p>\n<\/li>\n<li>Add the user to the <b>Power Members<\/b> group, Save the changes and hit F5: now access to the restricted page will be granted.\n<p><a href=\"http:\/\/blogs.msdn.com\/cfs-file.ashx\/__key\/CommunityServer-Blogs-Components-WeblogFiles\/00-00-00-26-94-metablogapi\/7824.9a1cc911_2D00_468f_2D00_44dd_2D00_b544_2D00_2dd3007271a8_5F00_7B8117E5.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px\" title=\"9a1cc911-468f-44dd-b544-2dd3007271a8\" border=\"0\" alt=\"9a1cc911-468f-44dd-b544-2dd3007271a8\" src=\"http:\/\/cloudidentity.com\/blog\/wp-content\/uploads\/2011\/04\/7824.9a1cc911_2D00_468f_2D00_44dd_2D00_b544_2D00_2dd3007271a8_5F00_7B8117E5.png\" width=\"548\" height=\"285\" \/><\/a><\/p>\n<p><b>Figure 44<\/b> &#8211; <i>Access Granted.<\/i><\/p>\n<\/li>\n<\/ol>\n<p>There you have it: your Umbraco web site is now integrated with Windows Live ID, Facebook, Google, Yahoo and any other social provider the Access Control Service will support in the future! It takes much longer to explain how to do it than to do it: the average time for walking through this tutorial is consistently under the 20 minutes.<\/p>\n<div style=\"clear:both\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Welcome to the second installment of the series on the ACS Extensions for Umbraco, part of the big ACS launch wave! This time I am going to assume that you succesfully installed the Extensions on your Umbraco instance, and you want to start accepting members from social &amp; web identity providers. You\u2019ll see&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1343,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[7,8,38,9,43],"tags":[],"class_list":["post-310","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-access-control-service","category-acs","category-appfabric","category-identity","category-umbraco"],"_links":{"self":[{"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/posts\/310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/comments?post=310"}],"version-history":[{"count":0,"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/posts\/310\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/media\/1343"}],"wp:attachment":[{"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/media?parent=310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/categories?post=310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cloudidentity.com\/blog\/wp-json\/wp\/v2\/tags?post=310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}