如何使用 Azure Functions 检查授权

Posted

技术标签:

【中文标题】如何使用 Azure Functions 检查授权【英文标题】:How to check authorization with Azure Functions 【发布时间】:2020-08-31 19:53:24 【问题描述】:

我使用 Azure Functions 作为 Xamarin Forms 应用和 ComosDB 表之间的中间人。我想我了解如何使用 Active Directory B2C 进行身份验证,但我不清楚如何进行授权检查。

我的理解是,我可以启用 Active Directory B2C 来对用户进行身份验证并为他们提供访问令牌。然后,我可以使用令牌作为参数对 Azure 函数进行 http 调用。如何检查该用户的令牌是否正确。最终,我想保护表中的数据,只提供与该特定用户相关的数据。

【问题讨论】:

如果您添加您认为有效的代码 sn-p 并单独突出显示您需要的更改会很好。这将有助于使您的问题更容易理解,并更快地获得解决方案 我还没有添加任何授权码,我正在研究试图了解这些部分是如何组合在一起的。我认为“索赔”的概念和使用 ClaimsPrincipal 类是我所需要的。谁能确认一下? 【参考方案1】:

在 Azure Functions 中验证令牌的方法至少有 2 种:

第一个是您可以手动完成:https://github.com/Azure-Samples/ms-identity-dotnet-webapi-azurefunctions/blob/12640a348852696ac0d01e7adfd937900ef8ea40/Function/BootLoader.cs#L73。 这使用 Microsoft.IdentityModel.Protocols.OpenIdConnect 和 System.IdentityModel.Tokens.Jwt 从元数据端点获取配置并验证令牌。 对您而言,主要区别在于 openid-configuration URL,您可以从允许您运行 B2C 用户流以在 Azure 门户中进行测试的视图中获取该 URL。

另一种方法是使用应用服务身份验证:https://cgillum.tech/2016/05/27/app-service-auth-and-azure-ad-b2c/。

【讨论】:

成功了!具体来说,我需要使用 API 管理应用程序,需要 B2C 身份验证才能访问 API,然后导入我的 Azure Functions。然后我可以使用 JWT 令牌中的“oid”声明作为识别用户的密钥。

以上是关于如何使用 Azure Functions 检查授权的主要内容,如果未能解决你的问题,请参考以下文章

Azure Functions .net 6 中的策略授权

Azure Functions App with APIM 使用托管标识 - 身份验证和授权

如何使用 Python Azure Functions QueueTrigger 手动使消息出队?

Azure Functions - 配置客户端证书身份验证

使用“apollo-server-azure-functions”的 Apollo 订阅

使用不记名令牌/OAuth2 的 Azure Functions 根 URL 身份验证