{"id":551,"date":"2008-03-30T18:34:11","date_gmt":"2008-03-30T23:34:11","guid":{"rendered":"http:\/\/blogs.devhorizon.com\/reza\/?p=551"},"modified":"2008-04-04T11:00:41","modified_gmt":"2008-04-04T16:00:41","slug":"guest-account-enabler-code-download-and-more","status":"publish","type":"post","link":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/","title":{"rendered":"Guest Account Enabler &#8211; Code Download and more!"},"content":{"rendered":"<p>Almost two months ago  , I wrote three blog posts (<a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=498\">part1<\/a>,<a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=508\">part 2<\/a> and <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=523\">part 3<\/a>) about Anonymous Users In SharePoint, how to set it up ,challenges you might face dealing with these creatures and couple of solutions. Since then , I have received quite a few emails from people asking for two main things :<\/p>\n<p>1) The source code for the solution I provided in <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=523\">part 3<\/a>.<\/p>\n<p>2) If there is any way to NOT use global.asax in a farm installation where there are  multiple WFEs sitting behind a load balancer. In this case , the feature responsible for copying the global.asax file from the feature folder to the root folder of your SharePoint web application (hosted in IIS) only copies the global.asax to the WFE server on which you activate the feature. For the rest of WFEs , you need to manually replace the global.asax files. Not acceptable! Actually I am covering this issue in more details in my upcoming post : <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=547\">The Importance of Network Load Balancing. <\/a><\/p>\n<p>Please download the source code from the link below. Take a look at the two projects included in the download.<\/p>\n<table style=\"width: 19%\">\n<tr>\n<td style=\"width: 11px\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm3.static.flickr.com\/2341\/2375680678_017c5caff2_o.gif\" height=\"16\" width=\"25\" \/><\/td>\n<td><a href=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2008\/03\/GAE.rar\" title=\"Guest Account Enabler Feature via global.asax\">Source Code<\/a><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<\/tr>\n<\/table>\n<p>This download contains two folders:<\/p>\n<p>I) <strong>GuestAccountEnabler_GlobalASAX<\/strong><\/p>\n<p>This folder contains the source code for &#8220;Guest Account Enabler&#8221;  functionality as a feature scoped at a site collection. The fact that it is a site collection feature might introduce some permission issues (read the comments at FeatureActivated and FeatureDeactivating methods)  wen using global.asax approach. Good news is that nothing prevents you to change the scope of the feature to Farm or WebApplication or run the code in FeatureActivated and FeatureDeactivating methods in an elevated context to make sure that activation and deactivation methods are executed with required access level to the file system. Bottom line is , it is not a fully automated approach for Farm installation. Please make sure you also read the ReadMe.txt for configuration steps.<\/p>\n<p>II) <strong>GuestAccountEnabler_HttpHandler<\/strong><\/p>\n<p>To overcome the issues mentioned above , I went a head and implemented the Guest Account Enabler functionality in a Http Module. Remember, <strong>global.asax is just a specialized Http Module <\/strong>, but by placing our code into a Http module instead , it is much easier to share it between multiple Web applications plus it introduces much easier deployment in a farm installation. Our Http module sits on the top of the Http Request  and check the authentication cookie , if It is not presented and the feature is enabled it injects the virtual &#8220;Guest&#8221; account into the current request and forces a new http request (reentering the http pipeline) to pick up the new [virtual] Forms identity. Please remember to read the ReadMe.txt file for configuration steps spscific for Http Module approach. Here is the gist of it:<\/p>\n<div id=\"ig-sh-1\" class=\"syntax_hilite\">\n\n\t\t<div class=\"toolbar\">\n\n\t\t<div class=\"view-different-container\">\n\t\t\t\t\t\t<a href=\"#\" class=\"view-different\">&lt; View <span>plain text<\/span> &gt;<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t<div class=\"language-name\">C#<\/div>\n\n\t\t\n\t\t<br clear=\"both\">\n\n\t<\/div>\n\t\n\t<div class=\"code\">\n\t\t<ol class=\"csharp\" style=\"font-family:monospace\"><li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\"><span style=\"color: #0600FF;font-weight: bold\">public<\/span> <span style=\"color: #6666cc;font-weight: bold\">class<\/span> GuestModule <span style=\"color: #008000\">:<\/span> IHttpModule<\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; <span style=\"color: #008000\">&#123;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">public<\/span> <span style=\"color: #0600FF;font-weight: bold\">virtual<\/span> <span style=\"color: #6666cc;font-weight: bold\">void<\/span> Init<span style=\"color: #008000\">&#040;<\/span>HttpApplication context<span style=\"color: #008000\">&#041;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#123;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/ Subscribe to events.<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">AuthenticateRequest<\/span> <span style=\"color: #008000\">+=<\/span> <span style=\"color: #008000\">new<\/span> EventHandler<span style=\"color: #008000\">&#040;<\/span>context_AuthenticateRequest<span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #6666cc;font-weight: bold\">void<\/span> context_AuthenticateRequest<span style=\"color: #008000\">&#040;<\/span><span style=\"color: #6666cc;font-weight: bold\">object<\/span> sender, EventArgs e<span style=\"color: #008000\">&#041;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#123;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OnAuthenticateRequest<span style=\"color: #008000\">&#040;<\/span><span style=\"color: #008000\">&#040;<\/span><span style=\"color: #008000\">&#040;<\/span>HttpApplication<span style=\"color: #008000\">&#041;<\/span>sender<span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Context<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">public<\/span> <span style=\"color: #0600FF;font-weight: bold\">virtual<\/span> <span style=\"color: #6666cc;font-weight: bold\">void<\/span> Dispose<span style=\"color: #008000\">&#040;<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">&#123;<\/span><span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/\/ &lt;summary&gt;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/\/ Authenticates the authorization request.<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/\/ &lt;\/summary&gt;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">private<\/span> <span style=\"color: #6666cc;font-weight: bold\">void<\/span> OnAuthenticateRequest<span style=\"color: #008000\">&#040;<\/span>HttpContext context<span style=\"color: #008000\">&#041;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#123;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">if<\/span> <span style=\"color: #008000\">&#040;<\/span>context <span style=\"color: #008000\">==<\/span> <span style=\"color: #0600FF;font-weight: bold\">null<\/span><span style=\"color: #008000\">&#041;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">throw<\/span> <span style=\"color: #008000\">new<\/span> ArgumentNullException<span style=\"color: #008000\">&#040;<\/span><span style=\"color: #666666\">&quot;context&quot;<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/Extract the forms authentication cookie<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #6666cc;font-weight: bold\">string<\/span> cookieName <span style=\"color: #008000\">=<\/span> FormsAuthentication<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">FormsCookieName<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpCookie authCookie <span style=\"color: #008000\">=<\/span> context<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Request<\/span><span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Cookies<\/span><span style=\"color: #008000\">&#091;<\/span>cookieName<span style=\"color: #008000\">&#093;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">if<\/span> <span style=\"color: #008000\">&#040;<\/span><span style=\"color: #0600FF;font-weight: bold\">null<\/span> <span style=\"color: #008000\">==<\/span> authCookie<span style=\"color: #008000\">&#041;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#123;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/ There is no authentication cookie. Check to see if Guest Account feature is activated<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/ If Feature is Activated, ValidateUser would return Guest Account Context<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #0600FF;font-weight: bold\">if<\/span> <span style=\"color: #008000\">&#040;<\/span>Membership<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">ValidateUser<\/span><span style=\"color: #008000\">&#040;<\/span><span style=\"color: #666666\">&quot;Guest&quot;<\/span>, <span style=\"color: #666666\">&quot;&quot;<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">&#041;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#123;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #6666cc;font-weight: bold\">string<\/span> requestedUrl <span style=\"color: #008000\">=<\/span> Uri<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">UnescapeDataString<\/span><span style=\"color: #008000\">&#040;<\/span>context<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Request<\/span><span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Url<\/span><span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">ToString<\/span><span style=\"color: #008000\">&#040;<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FormsAuthentication<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">SetAuthCookie<\/span><span style=\"color: #008000\">&#040;<\/span><span style=\"color: #666666\">&quot;Guest&quot;<\/span>, <span style=\"color: #0600FF;font-weight: bold\">false<\/span><span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008080;font-style: italic\">\/\/Force a new request (reenter the http pipeline)<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context<span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Response<\/span><span style=\"color: #008000\">.<\/span><span style=\"color: #0000FF\">Redirect<\/span><span style=\"color: #008000\">&#040;<\/span>requestedUrl<span style=\"color: #008000\">&#041;<\/span><span style=\"color: #008000\">;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; <span style=\"color: #008000\">&#125;<\/span><\/div><\/li>\n<\/ol>\t<\/div>\n\n<\/div>\n\n<p>As described in the ReadMe.txt , you need to register this Http Module in your extended site (the one that is protected by FBA). The good thing about this approach is that AuthenticateRequest event receiver only gets executed for your FBA site and only when the authentication cookie is not presented. That&#8217;s pretty much all about it !<\/p>\n<p>Wait! I have included two more things in the download files.<\/p>\n<p>1) It is no biggie , but you can see how to localize a feature&#8217;s title and description.<br \/>\n2) Have you ever heard about <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/aa660698.aspx\">Minimal master page<\/a> or minimal site definition (I wish there was one \ud83d\ude09 ) ? Both projects have a dummy Membership provider which I have called it &#8220;Minimal Membership Provider&#8221;.  Well, eventually you will have to merge the Guest Account Enabler functionality into your existing membership provider , but to start with,  you needed an authentication provider , right? I created that provider to give you the ability to quickly test the sample code. It is also using a dummy connection string so don&#8217;t even need to bother changing it to match your environment. Just put them in your Web.config and that&#8217;s it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Almost two months ago , I wrote three blog posts (part1,part 2 and part 3) about Anonymous Users In SharePoint, how to set it up ,challenges you might face dealing with these creatures and couple of solutions. Since then , I have received quite a few emails from people asking for two main things : [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-551","post","type-post","status-publish","format-standard","hentry","category-moss-2007"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Guest Account Enabler - Code Download and more! - Reza Alirezaei&#039;s Blog %<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reza Alirezaei\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/\"},\"author\":{\"name\":\"Reza Alirezaei\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\"},\"headline\":\"Guest Account Enabler &#8211; Code Download and more!\",\"datePublished\":\"2008-03-30T23:34:11+00:00\",\"dateModified\":\"2008-04-04T16:00:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/\"},\"wordCount\":776,\"commentCount\":45,\"image\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/farm3.static.flickr.com\\\/2341\\\/2375680678_017c5caff2_o.gif\",\"articleSection\":[\"MOSS 2007\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/\",\"name\":\"Guest Account Enabler - Code Download and more! - Reza Alirezaei's Blog %\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/farm3.static.flickr.com\\\/2341\\\/2375680678_017c5caff2_o.gif\",\"datePublished\":\"2008-03-30T23:34:11+00:00\",\"dateModified\":\"2008-04-04T16:00:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2008\\\/03\\\/30\\\/guest-account-enabler-code-download-and-more\\\/#primaryimage\",\"url\":\"http:\\\/\\\/farm3.static.flickr.com\\\/2341\\\/2375680678_017c5caff2_o.gif\",\"contentUrl\":\"http:\\\/\\\/farm3.static.flickr.com\\\/2341\\\/2375680678_017c5caff2_o.gif\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#website\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/\",\"name\":\"Reza Alirezaei's Blog\",\"description\":\"Blogging from the field!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\",\"name\":\"Reza Alirezaei\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"caption\":\"Reza Alirezaei\"},\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/author\\\/rezaa\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Guest Account Enabler - Code Download and more! - Reza Alirezaei's Blog %","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/","twitter_misc":{"Written by":"Reza Alirezaei","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/#article","isPartOf":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/"},"author":{"name":"Reza Alirezaei","@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938"},"headline":"Guest Account Enabler &#8211; Code Download and more!","datePublished":"2008-03-30T23:34:11+00:00","dateModified":"2008-04-04T16:00:41+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/"},"wordCount":776,"commentCount":45,"image":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/#primaryimage"},"thumbnailUrl":"http:\/\/farm3.static.flickr.com\/2341\/2375680678_017c5caff2_o.gif","articleSection":["MOSS 2007"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/","url":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/","name":"Guest Account Enabler - Code Download and more! - Reza Alirezaei's Blog %","isPartOf":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/#primaryimage"},"image":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/#primaryimage"},"thumbnailUrl":"http:\/\/farm3.static.flickr.com\/2341\/2375680678_017c5caff2_o.gif","datePublished":"2008-03-30T23:34:11+00:00","dateModified":"2008-04-04T16:00:41+00:00","author":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.devhorizon.com\/reza\/2008\/03\/30\/guest-account-enabler-code-download-and-more\/#primaryimage","url":"http:\/\/farm3.static.flickr.com\/2341\/2375680678_017c5caff2_o.gif","contentUrl":"http:\/\/farm3.static.flickr.com\/2341\/2375680678_017c5caff2_o.gif"},{"@type":"WebSite","@id":"https:\/\/blogs.devhorizon.com\/reza\/#website","url":"https:\/\/blogs.devhorizon.com\/reza\/","name":"Reza Alirezaei's Blog","description":"Blogging from the field!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.devhorizon.com\/reza\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938","name":"Reza Alirezaei","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","caption":"Reza Alirezaei"},"url":"https:\/\/blogs.devhorizon.com\/reza\/author\/rezaa\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts\/551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":0,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}