我有两个应用程序,一个MVC 5主站点(a(和一个Web Api 2从端点(B(,托管在两台访问1个数据库的不同机器上。
这些应用程序应该共享Authentication&基于表单身份验证的授权。建议采用什么方法来实现它,以便在(A(上进行身份验证:
- 端点(B(开始在具有〔Authorize〕属性的控制器上允许通过请求
- (A(和(B(上的Http.Context.User.Identity不为NULL
我试着使用这样的身份验证cookie:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "DefaultCookie",
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/auth/login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User>(
validateInterval:TimeSpan.FromMinutes(20),
regenerateIdentity: (manager,user) => user.GenerateUserIdentityAsync(manager))
}
});
但我并没有完全成功。
您可以自己滚动,但IdentityServer4可以做这类事情。粗略地说1(MVC认证;2( MVC获取Id令牌;3( 将请求传递给带有Id Token的Web API;4( Web API检查令牌是否有效并获取声明;5( 如果用户获得授权,则执行操作;6( 只要令牌有效,就重复3-5。