首页 > 解决方案 > Angular 9 + CAS 身份验证 + .NET Core Web API

问题描述

我的技术栈如下:

我正在构建一个 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 时,我错过了一些简单的东西?

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

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

标签: angularjwtasp.net-core-webapicas

解决方案


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

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

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

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

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

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


推荐阅读