我已经在Azure上部署了现有的ASP.NET应用。它具有自己的身份验证系统,本质上是一个u / p数据库表,并创建一个表单身份验证cookie:
public void LogIn(LoginDetails userLogin, bool createPersistentCookie)
{
var info = (CustomPrincipalInfo) userLogin;
var timeout = 30;
if (createPersistentCookie)
timeout = 60*24;
var cookie = info.CreateAuthenticationCookie(DateTime.Now, timeout, createPersistentCookie);
HttpContext.Current.Response.Cookies.Add(cookie);
}
public static HttpCookie CreateAuthenticationCookie(this CustomPrincipalInfo info, DateTime current, int timeout, bool remember)
{
var serializer = new JavaScriptSerializer();
var userData = serializer.Serialize(info);
var ticket = new FormsAuthenticationTicket(
1, info.Email, current, current.AddMinutes(timeout), remember, userData);
var secureTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, secureTicket) { Domain = FormsAuthentication.CookieDomain };
if (remember)
cookie.Expires = current.AddMinutes(timeout);
return cookie;
}
[大多数客户只是注册详细信息,向我们使用其详细信息登录,等等,但是我们被要求与使用ADFS进行SSO的客户集成。我对该主题的阅读表明,我们需要运行ADFS服务器,将我们的应用与其集成,然后参与建立其ADFS服务器与我们之间的信任的过程
我很好奇是否已知,因为它已经托管在Azure上,所以我们可以使用Azure / AAD跳过“运行ADFS服务器”部分,因为我们实际上没有任何基础架构可以做所以。该应用程序的启动例程是老式的Global.asax风格,使用Castle Windsor进行DI / IoC:
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
DependencyRegistrar.Register();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
InitializeInfrastructure();
MigrateDatabaseSchema();
DataAnnotationConfig.RegisterValidationAttributes();
BundleConfig.RegisterBundles();
}
我正在寻找的资源通常是较旧的东西:
ADFS with existing ASP.Net MVC App-这里提到a separate blog深入讨论服务器2012r2-我们确实有这样的sevrer,但希望将其淘汰,而不是添加继续使用它的其他原因/必须用较新的替换它一个
[Azure Websites SSO using ADFS带来了an azure sample,这似乎暗示Azure可以帮助我们避免运行专用的ADFS服务器,但是该示例已有9年的历史了]]]
The most recent one I found似乎是对我所遇到问题的合理描述,但我无法理解答案(基本上似乎是“阅读此链接,向下滚动一点”-阅读链接并没有给我带来麻烦面对任何明显的“这就是你要做的事情”)
Resources surrounding using ADFS on Azure似乎涉及很多;我不觉得我需要/想要/需要为负载均衡器,多个存储帐户,DMZ和代理等付费。这实际上是为了让一位客户的一个用户每月可以登录几次]]
[在该现有应用中创建一个非常基本的ADFS SSO身份验证机制需要采取哪些步骤,请了解如何为用户ID,以便当[email protected]出现并通过ADFS登录时,我可以知道登录的电子邮件地址,并像其他任何人一样向他提供他的表单身份验证cookie,并利用一些基于Azure的功能,这样我就不必运行ADFS服务器?
Gracias!
我已经在Azure上部署了现有的ASP.NET应用。它具有自己的身份验证系统,本质上是一个u / p数据库表,并创建一个表单身份验证cookie:public void LogIn(LoginDetails userLogin,bool ...
有两种方法可以做到这一点。
基本问题是您的凭据位于数据库中,而AAD和ADFS均不支持。
您可以在Azure中运行identityserver4并将idsrv4配置为针对数据库进行身份验证。然后,您可以将idsrv4与伙伴ADFS联合。