使用 Azure AD 和本地帐户保护 API

     2023-03-10     228

关键词:

【中文标题】使用 Azure AD 和本地帐户保护 API【英文标题】:Securing API with Azure AD and local accounts 【发布时间】:2020-08-19 07:34:04 【问题描述】:

我想保护我的 API,以便只有在 Azure AD 中进行身份验证并在我的应用程序中拥有本地帐户的用户才能调用它。前面将是 React SPA 应用程序。我已经创建了使用 Azure AD 对用户进行身份验证的 PoC,并且我可以从 SPA 调用我的 API。

现在我想添加对本地帐户的支持。我想过使用 ASP.NET Core Identity 来管理本地用户。然后我会为 SPA 创建端点以获取 JWT 令牌。但我不确定这是否是要走的路。我看到了代码生成令牌的示例,实现起来似乎并不难,但这就是安全性。也许自己做不是一个好主意?

我看到人们正在使用 IdentityServer4,据我所知,它还可以使用我的本地 ASP.NET Core Identity 帐户并与 Azure Ad 集成。但这将是我需要学习的技术堆栈中的另一个工具。它不会与任何其他应用程序共享,它将是我需要部署和管理的另一项服务。也许这对这种情况来说有点矫枉过正?

我还有什么其他选择?

【问题讨论】:

【参考方案1】:

现在我想添加对本地帐户的支持。我想过使用 ASP.NET Core Identity 来管理本地用户。然后我会为 SPA 创建端点以获取 JWT 令牌。

您可以通过在 api 中为 token authentication 添加端点来做到这一点。您的客户端应用程序将用户的凭据传递给 web api,web api 验证来自本地数据库的凭据,并将 JWT 令牌创建回客户端应用程序。对于验证令牌,您的 Web api 将创建两种身份验证方案,一种用于 AAD 令牌,一种用于本地数据库用户的令牌。

我看到人们正在使用 IdentityServer4,据我所知,它还可以使用我的本地 ASP.NET Core Identity 帐户并与 Azure Ad 集成。

Identity Server 4 支持 Azure Active Directory 等外部身份提供程序,并且可以使用 ASP.NET Core Identity 作为用户管理。如果您了解 OpenID Connect ,实施起来并不难,您可以从 Single Sign-on / Sign-out 等功能中受益。 Here 是结合了 EF 和 ASP.NET Identity 的代码示例。您可以添加外部身份提供者,例如 AAD:

services.AddAuthentication()
.AddOpenIdConnect("aad", "Azure AD", options =>

    options.ClientId = "<appID>";
    options.Authority = "https://login.microsoftonline.com/<tenant>/";             
    options.CallbackPath = "/signin-oidc-aadtenant";            
    options.SaveTokens = true;                                 
    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

)

【讨论】:

但我的问题是我是否应该自己为本地帐户发行 JWT 令牌?那我不是要自己实现OIDC和OpenAuth吗?这有意义吗?经过更多阅读,我不再认为这是我应该做的事情。 在 web api 中使用 JWT 很好,所以当使用本地帐户时,将 jwt 令牌发回给客户端。 After more reading I no longer think this is something I should do 为什么? 我的意思是自己创建它。我认为您应该坚持现有的解决方案,这些解决方案是根据标准构建的,众所周知并经过测试。无论如何,我正在切换到 Azure B2C。 Identity server4 文档很好,有很多代码示例,如果您接受 Azure AD B2C,请使用它。

Azure AD B2C:注销社交帐户(使用 OIDC 的 Azure AD)

】AzureADB2C:注销社交帐户(使用OIDC的AzureAD)【英文标题】:AzureADB2C:Logoutofsocialaccount(AzureADusingOIDC)【发布时间】:2021-09-1822:27:57【问题描述】:我有一个使用B2C的应用程序让用户使用本地帐户或AzureAD帐户登录。在注销期间,本... 查看详情

JWT 和 Azure AD 保护 Spring Boot Rest API

...名和密码,并获取访问令牌。但是可以将AzureAD与JWT一起使用,而不是硬编码用户详细信息吗?【问题 查看详情

Azure AD B2C 与企业 (Azure?) AD 帐户集成

...我们希望将AzureADB2C用于我们的Web应用程序,以允许用户使用“本地”帐户/密码或使用他们的社交帐户(Facebook等)登录。https://docs.microsoft.com/azure/ 查看详情

使用 JWT 令牌保护 asp.net 核心 Web api 时如何从 Azure AD 获取用户

】使用JWT令牌保护asp.net核心Webapi时如何从AzureAD获取用户【英文标题】:HowtogetusersfromAzureADwhensecuringasp.netcorewebapiwithJWTtoken【发布时间】:2017-12-0114:57:21【问题描述】:我在ReactJS中有一个.netcorewebapi和SPA客户端。我想允许用户使... 查看详情

保护 Azure 存储帐户中托管的静态网站的路由

...【发布时间】:2022-01-0215:37:11【问题描述】:我目前正在使用Azure静态Web应用来托管我的静态网站和API。但是该服务有一些限制,所以我决定从静态Web应用迁移出去。在SWA的静态网站托管中,您可以像这样在staticwebapp.config. 查看详情

从 Angular 前端调用受 Azure AD 保护的 Web API

...10:59:36【问题描述】:我目前正在开发一个Angular前端,它使用MSAL对用户进行身份验证。此前端应调用受AzureActiveDirectory保护的Web-API(也托管在Azure中)。虽然我很容易设法使用Angular 查看详情

无法验证从 Azure AD 获得的访问令牌签名以保护 Web API

...【发布时间】:2019-08-1008:15:09【问题描述】:我正在尝试使用隐式流使用AzureAd保护我的Webapi(.netcore2.2)。我使用Azure门户>AzureActiveDirect 查看详情

使用 Azure AD 中的不记名令牌保护 ASP.Net Core 3.1 API

】使用AzureAD中的不记名令牌保护ASP.NetCore3.1API【英文标题】:SecureASP.NetCore3.1APIwithBearerTokensfromAzureAD【发布时间】:2020-07-2523:52:33【问题描述】:我有一个.netcore3.1WebAPI。我想使用AzureAD中的不记名令牌保护端点。我已关注Thisguide... 查看详情

Azure AD B2C - 我们可以使用电子邮件 ID 而不是 UPN 登录 - 仅限本地帐户自定义策略吗?

】AzureADB2C-我们可以使用电子邮件ID而不是UPN登录-仅限本地帐户自定义策略吗?【英文标题】:AzureADB2C-Canwesign-inusingemail-idinsteadofUPN-localaccountsonlycustompolicy?【发布时间】:2021-10-1100:00:06【问题描述】:我正在使用AzureADB2C本地帐... 查看详情

从 React 调用受 Azure AD 保护的 API

】从React调用受AzureAD保护的API【英文标题】:CallAzureADprotectedAPIfromReact【发布时间】:2020-02-2113:45:37【问题描述】:我有一个需要访问托管在Azure中的ASP.NETCoreAPI的反应网络应用程序。这两个应用程序都受AzureAD保护。我已在AzureAD... 查看详情

使用 Azure Ad Auth 从 .NET Core Web API 读取/写入 Azure Blob

】使用AzureAdAuth从.NETCoreWebAPI读取/写入AzureBlob【英文标题】:Read/WriteintoAzureBlobfrom.NETCoreWebAPIusingAzurAdAuth【发布时间】:2021-10-1322:48:40【问题描述】:我正在尝试从我的API合并blob上传。于是创建了存储帐户和容器。并且身份验证... 查看详情

WebAPI 如何在受 Azure AD 保护的 web api 上允许 LocalHost 调试

...】:2020-02-0713:01:26【问题描述】:我已将我的Webapi设置为使用AzureAD进行所需的身份验证。这是一个多步骤配置在Startup.Auth.cs上publicvoidConfigureAuth 查看详情

如何保护使用 Azure 和 Oauth 的 grails API?

】如何保护使用Azure和Oauth的grailsAPI?【英文标题】:HowtosecuregrailsAPIthatusesAzurewithOauth?【发布时间】:2017-01-3122:29:06【问题描述】:我是grails和Azure的新手。我有一个将文档上传和下载到Azureblob存储的grailsAPI。该API供需要使用Oauth... 查看详情

Azure AD 身份验证令牌未通过 Web api 授权

...问题描述】:我在Azure上有一个需要授权的web-api,我正在使用AzureAD对帐户进行身份验证并生成访问令牌。我可以通过两种不同的方式通过ADAL为同一帐户成功地从AzureAD获取访问令牌,但其中只有一种由web- 查看详情

Azure AD 链接帐户和备用登录映射

】AzureAD链接帐户和备用登录映射【英文标题】:AzureADLinkedAccountsandAlternateLoginMapping【发布时间】:2016-10-2714:18:35【问题描述】:我的客户正在修改他们的所有UPN以匹配他们的主SMTP。他们有几个AzureAD目录,并且他们正在更改UPN的... 查看详情

使用 Azure AD 通过 OAuth2 对 Azure API 管理进行身份验证

】使用AzureAD通过OAuth2对AzureAPI管理进行身份验证【英文标题】:AuthenticateAzureAPIManagementwithOAuth2usingAzureAD【发布时间】:2021-04-0409:18:00【问题描述】:我正在尝试通过阅读文章通过AzureAD使用OAuth2保护APIMAPI:ProtectawebAPIbackendinAzureAP... 查看详情

Azure AD:访问令牌中缺少角色声明

...:06:16【问题描述】:对于我的应用程序,我希望用户能够使用他们的Azure帐户登录(单点登录)。我还需要一个访问令牌来访问受保护的后端。所以我可以同时获得id_token和access_token,并请求此网址:https://login.microsoftonli 查看详情

Azure SQL - 如何将 AD 用户添加到 SQL 池数据库

...添加到SQL弹性池中的SQL数据库同一租户中的Azure。我不想使用SQLServer身份验证(集成)。我似乎无法使用AD帐户(必需)登录以添加其他AD帐户。本 查看详情