【问题标题】:Authentication in javascript frontent, or in MVC backend?javascript 前端或 MVC 后端中的身份验证?
【发布时间】:2019-12-04 09:09:20
【问题描述】:

我正在尝试在以下架构中配置身份验证:

  1. 一个 REST web api,在 asp.net core 中完成
  2. 一个 MVC 客户端,其中的“视图”实际上是一个单页应用程序 (vue.js)。作为参考,我正在使用这个模板:TrilonIO

我想使用身份+身份服务器。

按照我的理解,我的 api 是一个安全资源:为了访问它,用户必须登录身份服务器,并获得一个令牌。

我的 MVC 应用程序是身份服务器的“客户端”之一。现在,这就是我感到困惑的地方:

我是否在 mvc 应用程序上实施身份验证,以便主索引控制器受到保护?然后,为了“加载”水疗中心,用户必须在身份服务器上进行身份验证,获取令牌,然后才能加载?

或者我是否忽略从 mvc 端实现任何身份验证,而只使用 oidc 客户端从浏览器端实现身份验证?

如果我在 mvc 路由上实现身份验证,那么基本上用户进行了两次身份验证:首先,您进行身份验证是为了访问应用程序中的视图。访问水疗中心后,您需要进行身份验证才能访问 Web api。一个“登录”就足以满足两者吗?如何?令牌的配置不会不同吗?

如果我只在浏览器中进行身份验证以访问资源,那么我的应用程序是否“不安全”?

任何见解将不胜感激;我绝对是新手。

提前谢谢你!

【问题讨论】:

    标签: asp.net-mvc .net-core single-page-application identityserver4


    【解决方案1】:

    您的应用程序需要受到保护。

    如果您的前端(例如浏览器)通过某些第三方执行身份验证,则需要使用 web-api 或服务器端应用程序(如果您使用像 asp.net mvc 之类的东西)从前端通知。然后,web-api 将使用令牌与第三方确认,可能还有一些额外的数据,以验证身份验证。您甚至可以通过 web-api 在您的服务器上使用自定义身份验证来执行此步骤。

    这将以身份验证为例,我们现在在服务器上有一个代表经过身份验证的用户的令牌。

    对 web-api/应用程序的每个回调都将包含一些令牌,web-api/应用程序使用该令牌来查看您是否授权访问特定功能。

    这意味着检查/注册身份验证以及令牌的位将使用另一种机制,或者如果它支持授权,甚至使用相同的第三方来获得授权。我喜欢使用代表权限uri,然后对每个web-api方法应用过滤器,检查接收到的令牌是否具有授权访问权限。

    【讨论】:

    • 您好,非常感谢您的回复。我仍然感到困惑的是:我是否将应用程序作为 mvc 应用程序进行身份验证,并在 startup.cs 中配置身份验证?在这种情况下,为了访问构建整个 spa 的单一视图,您需要进行身份验证,并获取一个允许您访问其余 api 的令牌。该令牌可以传回前端,然后附加到所有 api 调用。或者,我是否需要使用 oidc-client 在前端进行身份验证?
    • 如果我理解正确,您希望在提供 SPA 代码之前进行身份验证。但是,这并不是必需的,因为您的 SPA 将执行身份验证。无论如何,您的 web-api 都是开放的,这就是您需要令牌与之交互的原因。 SPA 还将执行授权,可能使用与初始凭据检查相同的权限,以防止在 SPA 中移动,尽管这只是一种预防措施,因为用户在没有有效令牌的情况下将无法与 web-api 交互。
    • 非常感谢。那么在这种情况下,我的身份验证纯粹是通过 oidc-client 完成的吗?不需要在我的 mvc 应用程序的启动类中实现它吗?谢谢。
    • 这里有一个类似的问题:stackoverflow.com/questions/49646561/…
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 2019-01-09
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多