我已经做执行以下操作(使用cookie认证)类似的东西:
1 - 设置cookie域为所有网站
我Startup.Auth.cs
看起来像这样的顶级域名:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => {
var identity = manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
//some additional claims and stuff specific to my needs
return Task.FromResult(identity);
})
},
CookieDomain = ".example.com"
});
2 - 更新所有的网站的web.config中使用相同的<machineKey />
矿看起来像这样:
<machineKey
decryption="Auto"
decryptionKey="my_key"
validation="HMACSHA512"
validationKey="my_other_key" />
现在我可以,比如说,account.example.com
进行登录操作,并且将用户重定向到site1.example.com
和认证,他们将可以看到。
由于api是无状态的,它不会查找cookie,对吗?据我所知,它只查找认证头。这将如何工作的API?我打算将API保存在我的MVC项目中,因此api将位于example.com/api,这也会起作用吗? – CularBytes 2015-08-26 09:55:52
因此,您可以使用承载令牌代替。关键是机器密钥在机器上是相同的,否则令牌不能被解密。 – 2015-08-26 10:49:45