首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dotnet-独立的Azure函数-如何访问HttpContext

Dotnet-独立的Azure函数-如何访问HttpContext
EN

Stack Overflow用户
提问于 2021-08-31 06:28:56
回答 1查看 426关注 0票数 0

我有一个由HTTP调用触发的dotnet 5 Azure函数(dotnet-isolated)。

该函数将由不同的Azure函数应用程序调用,我希望使用Azure AD保护目标,并使用“客户端凭据”OAuth2流。

我在: Microsoft GitHub示例中找到了一个很好的示例,它为我的场景提供了信息。

我的问题是,示例使用WebApi应用程序作为服务。这将使用Microsft.Identity.Web程序集中名为"ValidateAppRole“的扩展方法来访问HttpContext对象

我的Azure函数确实有一个HttpRequestData类型的参数。它有一个包含键值对的headers属性。其中一个密钥称为"Authorization“,它的值是Azure AD提供的访问令牌。我已经通过jwt.ms运行了这个令牌,可以确认"Roles“集合包含我需要验证的自定义角色。因此,我知道所需的信息是存在的;我只是不知道如何以编程方式检查它。

因为一个与dotnet隔离的Azure函数似乎不能访问HttpContext对象。如何进行等同于以下内容的检查?

代码语言:javascript
复制
HttpContext.ValidateAppRole("CustomRoleName");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-02 15:26:24

我为此制作了一个示例函数应用程序:https://github.com/juunas11/IsolatedFunctionsAuthentication

该示例包含两个中间件: AuthenticationMiddleware和AuthorizationMiddleware。前者验证JWT并从中创建一个函数,而后者根据在ClaimsPrincipal方法上设置的属性检查ClaimsPrincipal上的声明。

您可以在GitHub存储库中查看完整的代码。身份验证中间件使用以下命令将ClaimsPrincipal设置为FunctionContext

代码语言:javascript
复制
context.Features.Set(new JwtPrincipalFeature(principal, token));

然后,授权中间件可以通过以下方式从相同的上下文对象中获取它:

代码语言:javascript
复制
var principalFeature = context.Features.Get<JwtPrincipalFeature>();

然后,代码可以检查特定的声明。

在函数方法中也可以使用相同的上下文对象。在示例中,属性与中间件一起使用,以便函数代码本身不必检查授权。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68993844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档