【问题标题】:Angular 9 + CAS Authentication + .NET Core Web APIAngular 9 + CAS 身份验证 + .NET Core Web API
【发布时间】:2020-09-05 23:52:56
【问题描述】:

我的技术栈如下:

  • .NET Core Web API (v 2.1)
  • 角 9
  • CAS 认证服务器

我正在构建一个 Intranet 应用程序,并且需要通过我们的 CAS 身份验证服务器对用户进行身份验证。但是,我不太确定如何将所有部件牢固地粘合在一起。

经过大量研究,我找不到与我需要完成的任务类似的任何事情。这让我有点担心——我是不是想把错误的部分粘在一起?我之所以选择这个堆栈,是因为我过去分别熟悉它们。

所以这是我认为我应该做的:

  1. 在 Angular 中,检查用户是否经过身份验证。如果不是,则重定向到 CAS 身份验证端点。
  2. 一旦通过 CAS 认证,Angular 就可以拦截来自 CAS 的 Service Ticket 并将其传递给 Web API。让 Web API 确定票证是否有效。
  3. 如果 TGT 有效,Web API 会向 Angular 发出 JWT,现在前端和后端可以使用 JWT 安全地进行通信。

这是一种有效的方法吗?当谈到 Angular + Web API + CAS 时,我错过了一些简单的东西?

有没有更好的方法?我应该重新考虑我的技术堆栈吗?

我还没有尝试将它放入代码中,我想在我花时间编码之前确保这种方法是安全的。

【问题讨论】:

    标签: angular jwt asp.net-core-webapi cas


    【解决方案1】:

    我已经在 CAS 工作了几年。 据我所知,客户端应用程序(您的 Angular 应用程序)根本不应该参与 CAS。

    我从事的应用程序执行以下操作:

    客户端从服务器请求一些东西——Angular 应用程序的 index.html 文件。服务器判断客户端未登录,将客户端重定向到CAS Authentication Server,并带有一个参数告诉auth server在认证成功后重定向回哪里。

    客户端的浏览器被重定向到CAS Auth Server,用户登录,然后被重定向回服务器(在上一步参数中指定的url)。

    服务器现在确定用户已登录,并重定向到 Angular 应用的 index.html

    所以,所有的通信都是在服务器端应用程序和 CAS 之间进行的,根本不通过 Angular 应用程序。

    【讨论】:

    • 如果我使用的是 MVC 风格的 Web 应用程序,这对我来说完全有意义。后端服务器将处理身份验证。但是,对于 Angular + WebAPI,这两部分是相互独立的。
    • 客户端可以而且应该看到服务票,对吗?
    猜你喜欢
    • 2020-10-15
    • 2017-04-27
    • 2017-07-27
    • 2017-09-05
    • 2019-11-30
    • 2016-12-22
    • 2019-10-22
    • 2018-08-09
    • 2020-03-09
    相关资源
    最近更新 更多