首页 > 解决方案 > 允许第 3 方客户端 Web 应用程序(不是用户)以及我自己的 Web 客户端应用程序访问我的 Web api 的最佳方式是什么?

问题描述

我一直在研究为新项目执行 AuthN 和 AuthZ 的最佳方法,但没有发现任何似乎适合该项目要求的东西。

我有一个 .net 核心 API 项目,最初只能由我的 Razor Pages Web 应用程序(单独的项目)访问。

在不久的将来,我需要使 API 也可供 3rd 方应用程序访问(因此,如果用户登录到这个 3rd 方应用程序,他可以自动访问我的 API,而无需再次输入 UN/PW - 这很可能需要来自第 3 方团队的一些开发)。

我希望我的 Razor Pages Web 应用程序中的用户和第 3 方应用程序中的用户具有不同的角色(出于授权目的)。

API 和 Razor Pages 应用程序将在 Azure 中运行。

我想知道是否有一种可以在 API 端使用的解决方案来处理来自我的 Razor 页面的请求(优先使用从 B2C 身份验证过程中检索到的令牌)和来自其他第 3 方应用程序的请求。

我曾考虑生成唯一的 JWT,将其发送到 3rd 方应用程序以及我的 Razor Pages Web 应用程序,并在 API 端使用 .net 核心 jwtBearer 身份验证设置来允许身份验证/授权(可能会将用户角色信息发送为索赔)。

这似乎不是一个好的解决方案,因为这些 JWT 值将被硬编码并且不会被更新。

请让我知道您认为什么是好的解决方案。

谢谢你。

标签: azureauthenticationauthorizationclientasp.net-core-webapi

解决方案


您可能需要考虑提供开箱即用身份验证的 Azure AD。Azure AD 可用于端到端保护。你只需要通过 Azure AD 保护你的 Web API,任何需要访问你的 API 的客户端都必须通过 Azure AD 的身份验证,并且将获得一个令牌来访问你的 WebAPI。https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-auth-aad。要管理授权,您可以考虑角色https://github.com/Azure-Samples/active-directory-dotnet-webapp-roleclaims


推荐阅读