问题标签 [easy-auth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
412 浏览

python - 使用 python 的 Azure Function App:如何访问用户组以进行授权

我对 Azure Function Apps 和 OAuth 非常陌生,所以请多多包涵。

我的设置

我有一个带有简单 python 函数的 Azure 函数应用程序,除了打印请求标头之外什么都不做:

我按照本指南让用户在调用函数之前通过 EasyAuth 进行身份验证。
这似乎工作正常。通过浏览器访问该功能时,我被重定向到登录。成功登录后,我再次被重定向,并在浏览器中打印出 HTTP 响应。因为我能够访问X-MS-CLIENT-PRINCIPAL-ID并且X-MS-CLIENT-PRINCIPAL-NAME我认为身份验证成功。但是,当打印出整个请求标头时,我没有找到X-MS-TOKEN-AAD-REFRESH-TOKEN,X-MS-TOKEN-AAD-ACCESS-TOKENX-MS-TOKEN-AAD-ID-TOKEN.
这是输出(输出太大;在屏幕截图所示的输出下方我可以看到标题内容): 我的输出的前半部分

我的问题

我现在要做的是通过函数的python代码访问分配给登录用户的组,以进一步授权他的请求(例如“用户只能在分配组xyz时执行该函数,否则他将提示'不允许'”)。
为了实现这一点,我将“组”声明添加到我的应用注册的令牌配置中。

据我了解,通过使用 ClaimsPrinciple 对象(source)可以很容易地通过 .NET 中编码的函数访问用户组。

我如何能够通过 python 代码访问用户分配的组?
那可能吗?
我是否理解完全错误的东西?

跟进:
我现在不明白的一件事是,当我id_token第一次通过浏览器访问该功能(触发登录)时,我可以在浏览器调试器的回调-http-request中看到一个: 浏览器调试器:回调请求中的 id_token

当我使用 jwt.io 解密该令牌时,我能够看到分配的用户组的一些 ID,这似乎正是我想通过 python 代码访问的内容。
重新加载页面(我想请求然后使用已经过身份验证的浏览器会话)使回调消失。

0 投票
0 回答
32 浏览

azure - Azure EasyAuth:从 js 调用时如何将自定义声明添加到 /.auth/me 响应中?

最近开始关注 EasyAuth,并且对索赔有疑问。假设我是登录 Azure EasyAuth 支持的网站的 Facebook 用户,我想在客户端获得声明。据我所知,我需要调用“/.auth/me”端点并期待一个看起来像这样的响应 -

现在,user_claims将拥有 Facebook 提供的声明。问题是,如果我想在这个数组中添加一个自定义元素怎么办......我该怎么做?

PS我可能想到的唯一选择是启用令牌存储并通过其api在那里更新声明,这看起来很麻烦,因为我希望立即(在第一次登录时)出现额外的声明,并使用令牌存储我需要以某种方式监控我还没有弄清楚该怎么做的新用户/令牌。

0 投票
0 回答
47 浏览

azure-web-app-service - 范围参数中的 Azure Easy Auth 和基于资源的权限

我有一个使用 azure 身份验证/授权(easy auth)的 azure Web 应用程序打开以通过 Microsoft(azure AD)登录。应用注册具有一些基于资源的范围权限,例如 Microsoft graph Sites.Read.All 等。

但是,对 /authorize 端点的实际调用在范围查询参数中没有基于资源的权限。它只是显示&scope=openid+profile+email

使用简易身份验证时,如何配置应用程序以自动将我需要的所有范围权限添加到 /authorize 端点调用的查询参数中。

0 投票
0 回答
51 浏览

azure-web-app-service - 如何在本地为基于烧瓶的 Web 应用程序测试简易身份验证(Azure-App-Service)?

我正在使用启用 EasyAuth 的 Flask 来测试和构建一个简单的 Web 应用程序。

Easy Auth with Google Provider 已设置,它在应用服务 .azurewebsites 域上运行良好,但我想知道如何使其在本地运行?

如果我在 127.0.0.1:5000 上运行“烧瓶运行”,是否可以使用 Easy Auth 进行身份验证?人们如何测试授权码?是通过将代码推送到网站来完成的吗?

另外,是否有可用的烧瓶和简易验证样品?我已经看到很多带有装饰器的 .NET 应用程序示例,并且想知道烧瓶是否可用。

0 投票
1 回答
183 浏览

azure - 使用应用服务身份验证 (EasyAuth) 和自定义 OpenID 提供程序保护 Azure 函数时受众无效

我有一个 Azure 函数(尝试了 Windows 和 Linux 消费),它使用Azure 应用服务身份验证(Easy Auth)和自定义 OpenId Connect 提供程序来使用 http 触发器对我的 Azure 函数进行身份验证。

我在身份提供程序中配置了一个客户端(基于 Duende 身份服务器),获取了一个令牌,然后向 Azure Function 发送了一个请求(仅包含 Visual Studio 在创建 Function App 项目时最初创建的代码)。

这是我在 Azure 门户中所做的配置: 描述 Azure 门户中的配置的图像

当我现在将请求发送到 Azure 函数端点时,我总是收到以下错误:

我没有找到在 Azure 门户中或通过 Azure CLI 配置受众的任何选项,也没有关于受众必须如何被接受的文档。

我还发现了一个描述基本相同错误的 Github 问题: https ://github.com/MicrosoftDocs/azure-docs/issues/72019

如何查看有效受众是什么、在 Azure AppService 身份验证中配置有效受众或完全修复该错误?

PS:如果我在 Azure 中禁用身份验证,显然会触发该功能并返回响应。

0 投票
1 回答
103 浏览

azure-active-directory - 使用 Azure AD 的 Azure 应用服务轻松身份验证不适用于 linux Web 应用

Azure Web 应用程序 Easy auth(使用 Azure AD 身份验证)适用于 Windows Web 应用程序,但不适用于 Linux Web 应用程序。使用 Azure AD 启用简易身份验证后,Web 应用程序 url 显示找不到页面。

在此处输入图像描述

当我检查 Web 应用程序日志时,容器已启动并准备好为请求提供服务。但是网络应用程序仍然显示相同的Not Found错误。如果我禁用了 easy-auth,则 Web 应用程序将按原样运行。

我的 azure web 应用程序技术 堆栈React SPANode LTS 14.Linux web app

不确定我是否在配置上遗漏了一些东西。任何帮助表示赞赏。提前致谢...

0 投票
1 回答
72 浏览

azure - Azure easy auth get user role based on AD user Id ASP.net core app WebAPI

我正在关注链接以进行身份​​验证和授权。

我能够根据https://login.microsoftonline.com/{tenantID}/oauth2/token成功创建令牌

之后我使用 sayhello 调用 GET API。一切都很好,但我想根据 AD 用户的令牌和 UserId/Password 获取用户角色。我搜索了很多,但没有得到任何具体的解决方案。

0 投票
0 回答
55 浏览

asp.net-core - Azure 应用服务需要在使用 Easy Auth Azure AD 关闭的每个浏览器上登录

每次关闭浏览器时,我都会遇到问题,我在 Azure App Services 上运行的应用程序会重定向到 Microsoft Identity 平台并需要登录。

期望的行为是用户登录一次,如果他们关闭浏览器并在之后立即重新打开,则不必登录。

azure 应用服务正在运行一个 .NET 6 Web 应用程序,该应用程序使用 Microsoft.Identity 包在应用程序级别进行身份验证/授权,我认为这不是问题,但想提一下。

该应用服务与 Azure 门户中的“Easy Auth”和我公司的 Microsoft Identity 平台单租户模型集成。是否有我缺少的配置选项或以前有人遇到过这个问题?

编辑:更新 authsettingsV2 的参数。我可以确认我看到了正在传递的提示参数,但是当它附加到请求时登录失败。

我遇到一个错误页面,显示“您无权查看此目录或页面”。