ASP.NET MVC 单点登录(Single Signe On)
来源:互联网 发布:linux中重启mysql命令 编辑:程序博客网 时间:2024/05/18 02:17
一、定义: 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统-【百度百科】
二、非单点登录和单点登录的比较
三、在ASP.NET MVC中实现单点登录:(使用Forms身份验证方式)
1.启用单点登录:
单点登录的关键点:必须在所有web 应用程序的配置文件中的System.Web节点中加入MachineKey节点:
<machineKey validationKey="<MachineKey>" decryptionKey="<DecryptionKey>" validation="<CryptoAlgorithm>" decryption="<CryptoAlgorithm>" /> <authentication mode="Forms"> <forms name="SingleSignOn" loginUrl="<SSOLoginURL>" timeout="480" slidingExpiration="true"> </forms> </authentication>
2.创建三个web mvc application:
SSO,Web1,Web2:
3.在SSO中:
添加控制器:AccountController.cs:
namespace SSO.Controllers{ public class MyAccountController : Controller { [AllowAnonymous] public ActionResult Login(string returnUrl) { if (Request.IsAuthenticated) { return RedirectToAction("Index","Home"); } ViewBag.ReturnUrl = returnUrl; return View(); } [AllowAnonymous] [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(string userName, string password, string returnUrl) { if (FormsAuthentication.Authenticate(userName, password)) { FormsAuthentication.SetAuthCookie(userName, false); if (!string.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError(string.Empty, "Invalid login details"); ViewBag.ReturnUrl = returnUrl; return View(); } } }}创建视图Login.cshtml:
@{ ViewBag.Title = "Login";} <h2>Login</h2>@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })){ @Html.ValidationSummary() @Html.AntiForgeryToken() <div class="form-group"> @Html.Label("Username") @Html.Editor("UserName") </div> <div class="form-group"> @Html.LabelForModel("Password") @Html.Password("Password") </div> <input class="btn btn-primary" type="submit" value="Login" />}
在Web.configsystem.web节点下加入:(machinekey生成方式:https://blogs.msdn.microsoft.com/amb/2012/07/31/easiest-way-to-generate-machinekey/)
<machineKey validationKey="E4451576F51E0562D91A1748DF7AB3027FEF3C2CCAC46D756C833E1AF20C7BAEFFACF97C7081ADA4648918E0B56BF27D1699A6EB2D9B6967A562CAD14767F163" decryptionKey="6159C46C9E288028ED26F5A65CED7317A83CB3485DE8C592" validation="HMACSHA256" decryption="AES" /> <authentication mode="Forms"> <forms name="SingleSignOn" loginUrl="http://localhost/SSO/MyAccount/Login" timeout="480" slidingExpiration="true"> <credentials passwordFormat="SHA1"> <user name="demo" password="7110eda4d09e062aa5e4a390b0a572ac0d2c0220"/><!--1234--> </credentials> </forms> </authentication>设置项目PageUrl:
4.在Web1 和web2中分别创建HomeController:(加上Authorize attribute)
[Authorize]public class HomeController : Controller{ // // GET: /Home/ public ActionResult Index() { return View(); }}创建Index.cshtml:
@{ ViewBag.Title = "Web App1 Home";} <h2>Web App1 Home</h2> Logged in as @User.Identity.Name
@{ ViewBag.Title = "Web App2 Home";} <h2>Web App2 Home</h2> Logged in as @User.Identity.Name
5.启动web1,会自动重定向到http://localhost/SSO/Account/Login?ReturnUrl=%2fWebApp1%2f
输入用户名和密码,登录成功:
再启动Web2,则不会重定向到login 页面,而是到登录成功页面:
0 0
- ASP.NET MVC 单点登录(Single Signe On)
- ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On)
- ASP.NET 安全认证(三)-用Form 表单认证实现单点登录(Single Sign On)
- ASP.NET 安全认证(三)用Form 表单认证实现单点登录(Single Sign On)(寒羽枫)
- ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On)
- 实现单点登录(Single Sign On)
- 实现单点登录(Single Sign On)
- 实现单点登录(Single Sign On)
- 单点登录(Single Sign On)
- 单点登录SSO(Single Sign On)
- SSO-单点登录(single sign on)
- Single Sign On,单点登录
- Single Sign On 单点登录
- asp.net MVC 中 单点登录
- 【原创】ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On)(转)
- ASP.NET 安全认证(三)——用Form 表单认证实现单点登录(Single Sign On) 作者:寒羽枫
- ASP.NET 安全认证(四)——巧妙实现 Form 表单认证跨站点、跨服务器的单点登录(Single Sign On) 作者:寒羽枫
- ASP.NET 安全认证(四)——巧妙实现 Form 表单认证跨站点、跨服务器的单点登录(Single Sign On)
- USB枚举
- soap报文略说
- 初识Android项目知识点积累
- 欢迎使用CSDN-markdown编辑器
- Maven常用命令
- ASP.NET MVC 单点登录(Single Signe On)
- libjpeg-turbo使用实例(编解码jpeg、jpg转bmp、bmp转jpg代码)
- 常用手机uc浏览器兼容问题记录(陆续补充)
- 关于菜单使用gridView来实现的一些小经验
- SecureCRT常用指令
- mysql查看sql进程
- wireshark_sniffer_omnipeek三款网络分析工具的比较
- 反射机制的使用
- Fresco源码分析-SimpleDraweeView在ListView里怎么释放内存的?