【发布时间】:2015-09-27 13:53:28
【问题描述】:
我正在尝试在不使用 ASP.NET 身份的情况下将 OAuth 身份验证与 ASP.NET 5 MVC6 beta5 一起使用。
现在,我已经设置了一个简单的 cookie 身份验证,如果登录表单中指定的登录名存在于数据库中,无论输入什么密码(我不会在数据库中存储用户的密码) .
这是我使用的包:
"dependencies": {
"Microsoft.AspNet.Authentication": "1.0.0-beta5",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta5",
"Microsoft.AspNet.Authentication.OAuth": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
"Microsoft.AspNet.Http": "1.0.0-beta5",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta5",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5",
"Microsoft.Framework.Logging": "1.0.0-beta5",
"Microsoft.Framework.Logging.Console": "1.0.0-beta5",
"Microsoft.Net.Http.Server": "1.0.0-beta5",
"EntityFramework": "6.1.3",
},
我已经在 Startup.cs 配置方法中设置了这样的 cookie 身份验证(就在 app.UseMvc 之前):
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthentication = true;
options.LoginPath = new PathString("/Account/Login");
});
这是我在帐户控制器中的登录方法:
//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public IActionResult Login(LoginViewModel model, string returnUrl = null)
{
ViewBag.ReturnUrl = returnUrl;
if (ModelState.IsValid)
{
User user = securityService.FindUserByUserName(model.UserName);
if (user != null)
{
var claims = new List<Claim> { new Claim(ClaimTypes.Name, user.UserName) };
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
Context.Authentication.SignIn(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity));
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
}
}
return View(model);
}
这是位于帐户控制器中的注销方法:
//
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult LogOff()
{
Context.Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Login");
}
现在,我想使用此处演示的 OAuth 身份验证中间件来针对 AD FS 对用户进行身份验证:Authenticating ASP.NET 5 to AD FS OAuth
但我不知道如何在登录操作中指定使用此中间件进行身份验证(同时传递登录视图表单中输入的登录名和密码)。
有什么想法吗?
【问题讨论】:
标签: asp.net authentication cookies oauth-2.0 adfs