首页 > 解决方案 > 使用 oauth 对 Angular 和 .Net 核心应用程序进行身份验证和授权

问题描述

我有一个带有.Net核心后端的角度应用程序。我正在尝试使用 OpenIdConnect(Okta 作为 IDP)来实现 SSO。

做到这一点的最佳方法是什么?使用 angular-oauth2-oidc 从 Angular 应用程序进行身份验证?还是我在后端使用 Microsoft.AspNetCore.Authentication.OpenIdConnect 执行此操作?

我的出发点应该在哪里?我还想确保经过身份验证或授权的用户能够从浏览器或 Swagger 调用 Api 端点。

要在具有 UI 和后端的应用程序中更通用,SSO 是如何工作的?后端代码应该处理登录过程吗?

谢谢

标签: .netangularasp.net-coresingle-sign-onokta

解决方案


您应该在您的 Angular 应用程序中实现身份验证。由于 Oktai 是您的身份验证/SSO 服务,一般过程是用户将被重定向到 Okta 的登录页面以登录,在用户输入凭据并且 Okta 验证凭据后,用户将使用代码重定向回您的 Angular 应用程序(如果使用授权码flow +PKCE) ,您的应用程序将向 Okta 服务发送请求,其中包含获取 ID 令牌和访问令牌的代码,访问令牌可用于访问您受保护的 Web API。

对于 Angular 应用程序,您可以使用Okta Angular SDKOkta 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/


推荐阅读