.net - 使用 oauth 对 Angular 和 .Net 核心应用程序进行身份验证和授权
问题描述
我有一个带有.Net核心后端的角度应用程序。我正在尝试使用 OpenIdConnect(Okta 作为 IDP)来实现 SSO。
做到这一点的最佳方法是什么?使用 angular-oauth2-oidc 从 Angular 应用程序进行身份验证?还是我在后端使用 Microsoft.AspNetCore.Authentication.OpenIdConnect 执行此操作?
我的出发点应该在哪里?我还想确保经过身份验证或授权的用户能够从浏览器或 Swagger 调用 Api 端点。
要在具有 UI 和后端的应用程序中更通用,SSO 是如何工作的?后端代码应该处理登录过程吗?
谢谢
解决方案
您应该在您的 Angular 应用程序中实现身份验证。由于 Oktai 是您的身份验证/SSO 服务,一般过程是用户将被重定向到 Okta 的登录页面以登录,在用户输入凭据并且 Okta 验证凭据后,用户将使用代码重定向回您的 Angular 应用程序(如果使用授权码flow +PKCE) ,您的应用程序将向 Okta 服务发送请求,其中包含获取 ID 令牌和访问令牌的代码,访问令牌可用于访问您受保护的 Web API。
对于 Angular 应用程序,您可以使用Okta Angular SDK或Okta Auth JavaScript SDK(Auth SDK 是比 Okta Angular SDK 更低级别的 SDK)。您可以参考以下文章获取教程和代码示例:
https://developer.okta.com/quickstart/#/angular/nodejs/generic
这是另一篇文章,它提供了使用 asp.net core web api 作为后端的详细步骤:
https://developer.okta.com/blog/2018/04/26/build-crud-app-aspnetcore-angular
PKCE 流程概述:
https://developer.okta.com/docs/guides/implement-auth-code-pkce/overview/
推荐阅读
- python - Python 多处理比常规处理要慢。我该如何改进?
- wordpress - 解析错误:第 461 行 /home/anysite/mysite.com/wp-includes/class-oembed.php 中的语法错误、意外的“文本”(T_STRING)、期待“,”或“)”
- sql - 如果值也在第二列中,则 SQL 添加新行
- git - 如何使用 Unity 设置 git 进行游戏开发?
- google-chrome - 启动时显示无效的清单消息
- php - 对每个用户 ID 唯一的自定义字段进行 SELECT WHERE 查询
- python - xlsxwriter 单击单元格或应用功能
- node.js - 为什么我写入 MongoDB Atlas 的 Azure 函数的冷启动时间超过 70 秒?
- ios - 我想要一个用于 CoreData 的通用 fetchedResultController 来支持多个模型
- ruby-on-rails - Rails 2.2 不使用活动记录会话,即使它已定义