ASP.NET MVC中三方登录: 微软、谷歌、Office365
创建一个MVC的工程,在Startup.Auth.cs文件中,我们能看到这样的一些代码:

这其实是微软已经帮我们实现好的三方登录的接口,我们只需要创建相应的开发者账号,并在其中配置好跟我们应用程序相关的一些信息,获取到应用程序的Id跟密码,填到上面相应的接口中,即可实现相应账号的三方登录。
一、微软账号三方登录介绍
微软的开发者账号管理地址为:https://account.live.com/developers/applications/index。微软三方登录开发者账号配置的一些说明:
1、一个应用程序只能配一个有效的根域名,并且该根域名不能是localhost,该根域会自动从你填写的Redirect URLs中进行判断填充。
2、三方登录用到的Redirect URL格式必须为http://www.rootDomain.com/signin-microsoft。其中HTTP协议、根域名以及端口号是可以自由配置的,后面的/signin-microsoft是固定不变的。
二、谷歌账号三方登录介绍
谷歌的开发者账号管理地址为:https://console.developers.google.com/project。谷歌三方登录开发者账号配置的一些说明:
1、要实现谷歌三方登录,必须Enable Google+ API,其它需要的API可以自行添加。
2、谷歌的一个Client ID中,可以配置多个根域不同的Redirect URIs,并且可以是localhost。
3、三方登录用到的Redirect URL格式必须为http://www.rootDomain.com/signin-google。其中HTTP协议、根域名以及端口号是可以自由配置的,后面的/signin-google是固定不变的。
三、Office 365三方登录介绍
首先要说的是,微软有两套账号系统,一套称作Microsoft Account,就是我们所谓的微软账号,登录地址为:https://login.live.com/,或者使用地址https://www.outlook.com/,会进行自动跳转。另一套称作Work or School Account,就是我们所谓的Office 365,登录地址为:https://login.microsoftonline.com/,或者使用地址https://outlook.office365.com/,也会进行自动跳转。
其次,微软没有为我们提供封装好的Office 365三方登录的接口,在这里我们可以使用OpenId身份验证来实现Office 365的三方登录。具体步骤包括以下几点:
1、拥有一个Office365账号,如果没有的话,可以申请一个30天的免费账号,申请地址在:
2、下载Office Developer Tools for Visual Studio并安装,因为Office365的用户数据都放在Azure AD上,所以我们需要在Azure AD上注册我们的应用程序以获取用户数据,这个工具可以和Visual Studio集成,方便注册我们的应用程序,下载地址:http://aka.ms/OfficeDevToolsForVS2013。
3、使用VS创建一个MVC框架的Web Application,右键点击该工程,选择“Properties”,“Add”,“Connected Service”

然后点击“Register your app”,成功登录你的Office365账号后,即完成App的注册工作。

此时点击Web.config文件,即可看到我们注册成功后获取到的ClientID跟Password等信息。

如需要重新注册该程序,只需要把Web.config文件中的ida:ClientID和ida:Password配置项删除,然后再次Add Conencted Service时,会让你重新注册该程序。
4、在Office 365 APIs配置页面中,选中相应的Service,点击右面的“Permissions”,即可根据需要对该Service进行访问权限的设置。

访问权限设置完成后,可以看到相关的设置大致如下:

5、点击Office 365 APIs配置页面中的App Properties,我们可以设置App的一些属性,包括该App注册后显示的名称、该App可被访问的范围以及认证成功后的Redirect URIs,
该Redirect URIs只填写我们的根域即可,同时可以注册多个不同的URI地址。

6、安装OpenIdConnect相关的组件包 Install-Package Microsoft.Owin.Security.OpenIdConnect。
7、编写代码,大致内容如下:

四、支持MVC的开发工具
ComponentOne Studio ASP.NET MVC 这款轻量级控件,它与Visual Studio无缝集成,完全与MVC6和ASP.NET 5.0兼容,将大幅提高工作效率.
ASP.NET MVC中三方登录: 微软、谷歌、Office365的更多相关文章
- 转---在ASP.NET MVC中实现登录后回到原先的界面
有这样的一个需求:提交表单,如果用户没有登录,就跳转到登录页,登录后,跳转到原先表单提交这个页面,而且需要保持提交表单界面的数据. 提交表单的页面是一个强类型视图页,如果不考虑需要保持提交表单界面的数 ...
- 在ASP.NET MVC中实现登录后回到原先的界面
有这样的一个需求:提交表单,如果用户没有登录,就跳转到登录页,登录后,跳转到原先表单提交这个页面,而且需要保持提交表单界面的数据. 提交表单的页面是一个强类型视图页,如果不考虑需要保持提交表单界面的数 ...
- C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)
C# MVC 用户登录状态判断 来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...
- (转)Asp.Net MVC中身份认证和授权
MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: < ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...
- Asp.net Mvc中利用ValidationAttribute实现xss过滤
在网站开发中,需要注意的一个问题就是防范XSS攻击,Asp.net mvc中已经自动为我们提供了这个功能.用户提交数据时时,在生成Action参数的过程中asp.net会对用户提交的数据进行验证,一旦 ...
随机推荐
- JS回车事件,兼容目前所有浏览器
<script type="text/javascript" language=JavaScript charset="UTF-8"> docume ...
- dynamic2016 crm 安装语言包提示缺少组件报错
当安装dynamic2016 CRM英文语言包安装成功后,在系统切换语言的时候提示如下报错为缺少CRM reporting extensions 插件导致,在CRM的解压安装包如下路径找到对应的执行文 ...
- php字符串赋值到js的坑
很早以前的一个比较坑的问题,今天又遇到了,记录一下,免得以后再次入坑. 把php赋值到view层时,如果不是直接渲染到页面,而是赋值给变量.字符如果有回车或者换行就会出现问题. 示例: <?ph ...
- ArcEngine10.1二次开发错误: 无法嵌入互操作类型,请改用适用的接口
在之前配置ArcEngine.VS2010二次开发程序的时候,遇见"无法嵌入互操作类型,请改用适用的接口"的错误,在网上查了下,下面引用解决方法. 解决方式为在提示错误的引用上面右 ...
- shell脚本学习(一)
Shell脚本最常用于系统管理工作,或者用于结合现有的程序以完成小型.特定的工作. Shell的特点有: 1. 简单性 2. 可移植性 3. 开发容易 [什么是shell] 简单点理解,就是系统跟计算 ...
- linux 系统下开机自动启动oracle 监听和实例 (亲测有效)
[oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listene ...
- [VBS]脚本中的字典、动态数组、队列和堆栈
今天用VBS脚本写了几个程序,用到了字典(Dictionary).动态数组(ArrayList).队列(Queue)和堆栈(Stack).现在写篇Blog总结一下 :-) 1.编写环境 今天突发奇想下 ...
- Dojo注意
关于插件的加载: 回调函数中的顺序,是按照插件的顺序填写的,否则就很可能会插件加载出错.
- 【技术贴】VirtualBox给VDI格式的虚拟机扩容
新建立了一个虚拟机用来装一些比较烦的软件,比如数据库什么的,但是初始的时候硬盘放小了,找了很久才找到解决方案(我的数据库是动态大小的): 1.直接在虚拟机关闭的状态下,在设置-->存储--> ...
- Windows 7 防火墙对Virtualbox guest的影响
今天测试ASA的public servers配置,在自己的Win7手提用Virtualbox装了个Linux作为测试服务器,网络设置为bridged.从外网可以ping通测试服务器,也可以连80端口, ...