【问题标题】:Token based authentication from class library to mvc5 application从类库到 mvc5 应用程序的基于令牌的身份验证
【发布时间】:2016-08-07 01:53:18
【问题描述】:

我有带有自定义登录实现的 mvc5 应用程序。一旦我从用户那里获得凭据,就会发布并获取令牌以验证用户。 在单独的类库项目中实现 Owin Token。

[HttpPost]
        [AllowAnonymous]
        public ActionResult Login(UserLoginViewModel model)
        {
            string baseAddress = "http://localhost:4312";
            Token token = new Token();
            using (var client = new HttpClient())
            {
                var form = new Dictionary<string, string> 
               { 
                   {"grant_type", "password"}, 
                   {"username", "jignesh"}, 
                   {"password", "user123456"}, 
               };
                var tokenResponse = client.PostAsync(baseAddress + "/otoken", new FormUrlEncodedContent(form)).Result;
                //var token = tokenResponse.Content.ReadAsStringAsync().Result;
                token = tokenResponse.Content.ReadAsAsync<Token>(new[] { new JsonMediaTypeFormatter() }).Result;
               ........
            }
    }

我不确定如何从 mvc 应用程序调用/触发类库项目中的令牌实现。因为类库项目不是可执行项目。是否有可能在单独的类库中实现基于令牌的实现,并在不同的应用程序(mvc 和 webapi)中使用该实现。

我的图层

UI(MVC) -> 认证项目(Owin 类库) -> 实体框架

有什么想法吗?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api owin asp.net-mvc-5


    【解决方案1】:

    是的,您可以,但您需要通过某种 API 公开您的应用程序登录。

    例如,您可以创建一个令牌服务器,该服务器负责对您的 API 和您的 MVC 项目进行身份验证 - 一个外部提供商 - 例如 Google 或 Facebook。

    这也是在两个应用程序(MVC 和 API)之间共享相同令牌的最佳方式。

    查看this的文章,非常清楚。

    希望对你有帮助:)

    【讨论】:

    • 我们如何在类库中调用令牌。因为不会调用类库。只有我们可以调用的 web 项目对吗?那么如何在类库中调用令牌实现
    • 您需要使用 API 公开您的类库。这是肯定的。您可以做的是在 MVC 和 API 之间共享类库,并在两者中公开令牌端点。或者,更好的是,创建一个 THIRD API 并将其用作资源服务器,并使用该 API 来验证您的 MVC 和 API。检查链接!
    • 是否可以在单个样本中同时使用 Db 身份验证和 Active Directory 身份验证?
    【解决方案2】:

    对于基于令牌的身份验证,您需要使用配置您的 mvc 应用程序或 webapi 来发出令牌。类库无法颁发token。主要原因是,您需要调用配置为获取token的url eg.http://localhost:8080/api/gettoken。 所以,要么使用 webapi 发行令牌,要么使用 mvc 应用发行令牌。

    【讨论】:

    • 但我想在单独的项目中移动身份验证逻辑,以便同时使用 mvc 和 webapi 应用程序
    • 为什么要同时使用mvc和webapi来颁发token?即使你把你的逻辑移动到单独的dll中,也只有其中一个可以颁发token,不能两者都颁发。如果你想要两者都认证,然后对 mvc 使用表单身份验证,对 webapi 使用令牌。所以,一旦你登录,在 mvc 中对用户进行身份验证后,然后向 webapi 发出请求以获取令牌。
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 2014-06-04
    • 2021-01-25
    • 1970-01-01
    • 2016-01-23
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多