应用程序之间共享的身份-Identity Framework C#.NET

时间:2018-07-19 19:50:27

标签: c# .net asp.net-mvc asp.net-web-api2 asp.net-identity

我有2个应用程序,一个MVC 5主站点(A)和一个Web Api 2从端点(B)托管在访问1个数据库的两台不同计算机上。

这些应用程序应基于表单身份验证共享身份验证和授权。推荐的实现该方法的方式是什么,使其一旦在(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))
            }
        });

但是我还没有完全成功。

1 个答案:

答案 0 :(得分:1)

您可以自己动手,但IdentityServer4可以执行这种操作。粗放1)MVC认证; 2)MVC获取ID令牌; 3)将请求传递给具有ID令牌的Web API; 4)Web API检查令牌是否有效并获得声明; 5)如果用户被授权,请执行操作; 6)只要令牌有效,请重复3-5。