angular - Angular 9 + CAS 身份验证 + .NET Core Web API
问题描述
我的技术栈如下:
- .NET Core Web API (v 2.1)
- 角 9
- CAS认证服务器
我正在构建一个 Intranet 应用程序,并且需要通过我们的 CAS 身份验证服务器对用户进行身份验证。但是,我不太确定如何将所有部件牢固地粘合在一起。
经过大量研究,我无法找到与我需要完成的任务类似的任何事情。这让我有点担心——我是不是想把错误的部分粘在一起?我之所以选择这个堆栈,是因为我过去分别熟悉它们。
所以这就是我认为我应该做的事情:
- 在 Angular 中,检查用户是否经过身份验证。如果不是,则重定向到 CAS 身份验证端点。
- 一旦使用 CAS 进行身份验证,Angular 就可以从 CAS 中截取 Service Ticket 并将其传递给 Web API。让 Web API 确定票证是否有效。
- 如果 TGT 有效,Web API 会向 Angular 发出 JWT,现在前端和后端可以使用 JWT 安全地通信。
这是一种有效的方法吗?当谈到 Angular + Web API + CAS 时,我错过了一些简单的东西?
有没有更好的办法?我应该重新考虑我的技术堆栈吗?
我还没有尝试将它放入代码中,我想在花时间编码之前确保这种方法是安全的。
解决方案
我已经在 CAS 工作了几年。据我所知,客户端应用程序(您的 Angular 应用程序)根本不应该参与 CAS。
我从事的应用程序执行以下操作:
客户端从服务器请求一些东西——Angular 应用程序的 index.html 文件。服务器确定客户端未登录,并将客户端重定向到 CAS Authentication Server,并带有一个参数告诉 auth 服务器在身份验证成功后重定向回哪里。
客户端的浏览器被重定向到 CAS Auth Server,用户登录,然后被重定向回服务器(在上一步参数中指定的 url)。
服务器现在确定用户已登录,并重定向到 Angular 应用的 index.html
所以,所有的通信都是在服务器端应用程序和 CAS 之间进行的,根本不通过 Angular 应用程序。
推荐阅读
- git - 一个功能分支上的许多常规提交类型的专长
- java - 如何将 JSON 数组反序列化为 Apache Beam PCollection
- optaplanner - 防止在链式计划中触发不必要的影子变量更新
- python - FastAPI OAuth2 范围
- ruby - 如何创建一个用字符串和整数属性初始化的 ruby 类和数组?
- algorithm - 结合二分搜索和线性搜索或任何其他算法
- javascript - 如何为克隆的 html 的子标签分配 id
- python - 无法设置 IPv4 服务器
- python - Ursina 引擎纹理映射
- python - 从由元组组成的字典中删除元素,计算元组中的最后一个元素和字典中的值