当前位置: 首页 > 知识库问答 >
问题:

在web app中对用户进行身份验证时,向azure功能验证用户

马权
2023-03-14

我有一个ASP。NET MVC Web应用程序在Azure应用程序服务中作为Web应用程序运行。此web应用程序通过HttpClient从控制器调用Azure函数。使用Azure Active Directory在web应用中配置身份验证/授权。我需要在调用Azure函数时对用户进行身份验证,以便我可以访问用户声明。我还试图在Azure功能本身中配置身份验证,但每当我从web应用调用该功能时,这都会导致“未经授权的响应”。是否有办法使web应用程序和Azure功能使用相同的Active Directory身份验证。因此,当用户通过web应用程序身份验证时,他不需要在Azure函数中再次进行身份验证,并且所有用户声明都可以在函数本身中使用?

共有1个答案

公良育
2023-03-14

我可以想出三种不同的方法

使用无记名令牌。

创建两个单独的应用程序注册,一个用于Web应用程序,一个用于函数应用程序。为各自的应用程序设置身份验证/授权功能,两者都配置为需要AAD访问。授予Web应用程序的AAD应用程序注册权限以访问函数应用程序的AAD应用程序注册。

为了确保web应用程序的访问令牌是可用于联系函数应用程序的JWT,您需要向web应用程序添加其他登录参数。要执行此操作,请按照此处的说明操作,但应将“AdditionalLoginParms”设置为“resource”=

用户向Web应用程序发出经过身份验证的请求时,应填充一个名为X-MS-TOKEN-AAD-ACCESS-TOKEN的标头,该标头应是具有Function应用程序应用程序注册受众的访问令牌。然后,这可以用作Function应用程序API调用的承载令牌,它应该满足函数应用程序的身份验证/授权要求。

使用代表流

创建两个单独的应用程序注册,一个用于Web应用程序,一个用于函数应用程序。为各自的应用程序设置身份验证/授权功能,两者都配置为需要AAD访问。授予Web应用程序的AAD应用程序注册权限以访问函数应用程序的AAD应用程序注册。

然后,遵循代表流,以便web应用程序可以为功能应用程序的经过身份验证的用户用户获取访问令牌。有几个库可以帮助实现此流。如果您的应用注册是AAD V1应用,请参阅ADAL;如果您的应用注册是AAD V2应用,请参阅MSAL。

使用客户端定向流(X-ZUMO-AUTH)

创建两个单独的应用程序注册,一个用于Web应用程序,一个用于函数应用程序。为各自的应用程序设置身份验证/授权功能,两者都配置为需要AAD访问。授予Web应用程序的AAD应用程序注册权限以访问函数应用程序的AAD应用程序注册。

要确保Web应用程序的访问令牌可用于针对函数应用程序进行身份验证,您需要向Web应用程序添加其他登录参数。为此,请按照此处的说明操作,但将addtionalLoginParams设置为资源=

当用户向Web应用程序发出经过身份验证的请求时,应填充一个名为X-MS-TOKEN-AAD-ACCESS-TOKEN的标头,该标头应是具有Function应用程序应用程序注册受众的访问令牌,以及标头X-MS-TOKEN-AAD-ID-TOKEN中的id令牌。向https://发出POST请求。azurewebsites.net/.auth/login/aad有效负载
{"id_token":

注意:此选项中的声明将是身份验证令牌的声明,而不是像前两个选项中那样的身份提供者的声明。要获得与其他选项相同的声明,请将应用程序设置“Web站点\u AUTH\u ZUMO\u USE\u TOKEN\u STORE\u声明”设置为“true”。

 类似资料:
  • 我已经创建了一个WebApi应用程序,它可以使用Graph API在Azure AD B2C租户上创建一个用户。 现在用户必须在Azure AD B2C上进行身份验证,就像我使用like Graph API一样。我指的是一种程序化的登录方法,而不是微软登录页面。是否可以使用Graph API对Azure AD B2C进行身份验证?如果是的话,请你给我建议一下做这件事的方法。

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 我已配置Identity Server 4并使用Azure AD身份验证。如果我在身份服务器中使用租户特定的授权URL,一切都可以正常工作。这样,只有该租户的用户才能登录。我希望允许多个域登录,并希望在后端验证发行者。 为了支持这一点,我需要使用Azure AD的通用登录endpoint,在我登录后,当它重定向到Identity Server的登录endpoint时,我收到以下错误。我应该做什么配

  • 我需要一些有关Azure API管理服务的帮助。 目前,我们有一个单页应用程序,它使用Azure上托管的两个后端服务(WebApi.NETCore)。为了对用户进行身份验证和授权,我们使用IdentityServer(也作为服务托管在Azure上)SubscriptionService。在这里,IdSrv对用户进行身份验证,并定义webapp可以访问哪些api。如果用户拥有给定API的权限,Sub

  • 我正在使用Jersey用Java编写一个RESTful应用程序,我需要对用户进行身份验证。我知道我可以使用注释@RolesAllowed来指定资源中的角色,但是我不明白用户是如何与特定角色相关联的。客户端以这种方式发送用户名和密码 假设某些方法只能由超级用户使用,而其他方法只能由任何用户使用,那么当用户名和密码由客户端发送时,我如何区分它们?

  • 我正在通过以下URL为功能应用程序执行azure active directory身份验证https://www.c-sharpcorner.com/article/secure-azure-function-with-azure-ad/ 但是,当我通过功能应用程序点击我的url时,它会给我未经授权的权限,我还需要做其他事情吗 请查看以下屏幕截图。 非常感谢您的帮助