体验Windows Azure的Access Control Service

我在工作之余写了个和工作内容相关的一个网站,ASP MVC2 + Azure Storage,并且已经部署到了云端。之后有空就修修补补,坚持了一段时间。

 

然后有了想要给网站加社交功能的想法了,作出的东西总想有用户,有了用户又想有互动。可我一个业余做些小东西的人是不会花时间去开发复杂的功能的。如果自己开发用户系统,需要注册,数据存储,改密码,邮件验证等等,代码量也大。开发出来了用户会买单么?现在网站帐号这么对,谁会想去花时间注册帐号呢?

 

我想要我的网站能互动社交,但不太想开发用户系统,这是个问题。Windows Azure居然还真有解决方案,真想不到。解决方案是微软提供了登录认证的协议和平台,平台就是Azure的Access Control Service,协议默认支持Facebook,Google,Windows Live,Yahoo!几个大的用户系。有了平台和协议,你只需要配置一下就OK,不需要写代码,然后用户就能使用这些大公司的帐号登录你的Application了。

 

下面开讲,需要的条件:

有Windows Azure帐号

基于Azure的Web Application

开发环境安装Microsoft Identity Foundation Federation 需要下载安装两个部分: WIF RuntimeWIF SDK

 

然后就是具体怎么操作了:

首先,我们先配置Windows Azure,先来提供ACS的支持,登录你的Azure,选择Service Bus,Access Control & Caching。

然后选择New创建一个Access Control的Namespace,一个帐号可以建多个,只要你有$就行,接下来会看到这个界面:

Namespace很重要,决定了这个网址http://****.accesscontrol.windows.net ,用来做帐号登录认证过程中会出现这个网址的。创建号之后选中新创建的项目点这个按钮:

然后进入配置阶段,首先进入是这个页面:

过目吧,这个页面没什么信息,仅仅看看一些操作条目吧。我们今天只能用到前面三个:

添加用户帐号的Provider,向导式的,很简单的:

只有Facebook的向导稍微复杂了一点,不但这里要设置,你还要去facebook申请个Developer App才可以。然后把AppId和AppSecret填在向导里面。另外facebook Developer那边的App的URL必须填成上面写的http://***.AccessControl.windows.net/

添加好Provider就可以配置Application了,需要新建Relying Party Application,这个表也比较简单。

五个地方需要注意,Name:你的App的名字,Realm:App的网址,例如http://***.cloudapp.net , ReturnURL:http://***.cloudapp.net/Account/SignIn

Providers就选上你接受的帐号类型,RuleGroup就选默认的Create New Rule Group。还有很多参数都保持默认。

小技巧,你的App可以添加多次,方便开发和实际部署,我的方案:

AppName Dev: http://127.0.0.1:81/Account/SignIn

AppName Production: http://***.cloudapp.net/Account/SignIn

这样开发部署都没有问题。

然后最后一步需要配置RuleGroup,不同的Provider帐号登录后给你返回的信息不同,你可以在这里做个过滤之类的。

上面就是个Name,没什么有用的信息,下面是登录之后返回的信息,Google和Facebook都返回email, Name, Identifier。Facebook额外返回了几个属性,Windows Live信息最少,连Email和Name都没有,只有Identifier。

到此,Azure这边的配置就完了。

 

然后转战程序员这边了,下载ACS2 Simples ,解压\ACS\Websites\MVC3CustomSignInPage 这个Web工程。打开这个Web工程之后右键工程文件,"Add STS Reference"就会打开一个向导,前提是你装了WIF Runtime及WIF SDK。

第一个不用填,第二个可以填Production环境,也可填开发环境。下一步

下面有个Example,直接替换域名部分为***.accesscontrol.windows.net就可以了,这个就是Azure ACS配好的那部分。接下来一路Next。

然后调试,或者直接部署,都可以的,有个问题是怎么在调试和部署之间切换啊。你的Web.Config有这么两段

\microsoft.identityModel\service\audienceUris\add [Value属性]

\microsoft.identityModel\service\federatedAuthentication\wsFederation [realm属性]

把这两个属性改成你的Site的URL就可以了,Debug写127.0.0.1,部署时候写实际值。


给个例子好了 http://scommp.cloudapp.net 

posted @ 2011-09-24 02:48  Haitao Chen  阅读(1932)  评论(2编辑  收藏  举报