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

.NET核心应用程序与Azure应用程序服务身份验证

谢鸿
2023-03-14

我的webapp是用。NET核心并部署在Azure中。我已启用Azure应用程序服务身份验证,并将其配置为使用Azure Active Directory。当我访问webapp时,我确实会被重定向到正确的登录页面。登录后,我可以浏览到endpoint。对我进行身份验证,并查看是否存在针对我的用户的声明。我还可以验证下面的请求标头是否存在值:

  • X-MS-TOKEN-AAD-ID-TOKEN
  • X-MS-TOKEN-AAD-ACCES-TOKEN
  • X-MS-TOKEN-AAD-EXPIRES-ON
  • X-MS-TOKEN-AAD-REFRESH-TOKEN

但是我无法在控制器中检索这些声明。使用用户。我dentity.is身份验证总是假和用户。身份。索赔是空的。

如何让用户通过身份验证并检索声明?

理论上,我可以检查请求头(X-MS-TOKEN-AAD-ID-TOKEN)是否存在,然后检索endpoint上存在的声明。但这似乎不是正确的方式?

编辑:我可能在这里讨论的同一个问题上绊倒了吗?(在Asp中使用EasyAuth针对Azure应用服务上的AAD进行身份验证时,无法填充Claims主体。Net Core网页应用)

共有1个答案

滑乐逸
2023-03-14

如在应用程序中使用用户标识所述:

应用程序服务通过使用特殊的标题将一些用户信息传递给您的应用程序。外部请求禁止这些头,只有在应用程序服务验证/授权设置时才会出现这些头。一些示例标题包括:

  • X-MS-CLIENT-PRINCIPAL-NAME

用任何语言或框架编写的代码都可以从这些标题中获取所需的信息。对于ASP. NET 4.6应用,ClaimsMain会自动设置相应的值。

我们的应用程序还可以通过/上的HTTP GET获取更多用户详细信息。验证应用程序的endpoint。请求中包含的有效令牌将返回一个JSON负载,其中包含正在使用的提供者、底层提供者令牌和一些其他用户信息的详细信息。

正如Chris Gillum建议的那样,您可以调用/。验证/meendpoint并检索用户声明。您可以编写自定义中间件来检查X-MS-CLIENT-PRINCIPAL-ID头并调用/。验证/meendpoint并手动设置用户声明。下面是详细的代码示例,您可以参考类似的问题。

此外,您可以修改应用程序并显式添加身份验证中间件,而不是像evilSnobu评论的那样使用应用程序服务身份验证/授权(EasyAuth)。对于这种方法,您可以使用ASP。Net Core OpenID Connect中间件,详细信息您可以按照以下教程进行操作:

将Azure AD(v2.0终结点)集成到ASP. NET Core Web应用中

将Azure AD集成到ASP. NET Core Web应用中

 类似资料:
  • 这在调试期间也有效,但是当我发布到Azure时,它也会失败,因为我的密钥返回null。 任何帮助在哪里我应该看看如何解决这将是伟大的。为什么在生产中会得到null,而在提供相同凭据时却不进行调试?

  • react中的前端 基于Spring Boot“resource-service”的后端服务 keycloak 其他后端服务(使用者) 前端和使用者服务都使用REST API与后端通信。我们使用Keycloak作为我们的用户管理和身份验证服务。 我们希望通过提供web应用程序和服务流来将基于Spring的服务“资源服务”与Keycloak集成: > 基于web application-react的

  • 我已经浏览了很多帖子和文章,但没有找到一个简单的解决方案,下面我必须实现。 平台:Spring Boot 2。x、 嵌入Tomcat的x(Spring Security 5.x.x) 解决方案:使用许多客户端应用程序和许多最终用户的REST服务。 > 因此,我必须使用一次性令牌对上述应用程序进行身份验证。因此,我计划通过启用和来实现Spring OAuth2。对于每个应用程序客户端,我将生成一个令

  • 在我的网络项目中,我想让用户使用用户名/密码和微软帐户登录。技术-堆栈: Asp.网络核心 角 Azure应用服务 首先,我创建了用户名/密码登录。这样地: 启动。反恐精英: 登录方式: 并通过[授权]保护我的api enpoints。到现在为止,一直都还不错。。。这很有效。 现在我想添加一个登录方法与Microsoft帐户。我使用Azure应用服务身份验证/授权(https://docs.mic

  • 我有一个使用Kafka Streams API的应用程序。我在当地工作时没有问题。我想连接到远程Kafka代理进行阶段测试。远程Kafka代理设置为使用GSSAPI sasl机制并使用Kerberos。我运行用java编写的Streams应用程序时出错。在我查找错误消息后,我找到了答案,但仍然有问题。 错误消息;获取相关id为3的元数据时出错:{[APPID]-KTABLE-AGGREGATE-S

  • 我需要在我们的Web应用程序中使用LDAP/AD服务器实现SSO身份验证和验证用户。Web应用程序是使用Spring(Java)/Hibernate制作的,应用程序服务器是UAT中的Jboss和生产中的Webphere。 我正在寻找一些好的简单的解决方案,可以帮助我实现它,从几个朋友那里听说华夫饼是一个很好的解决方案,但是在网上搜索并尝试了几天之后,我不确定我是否朝着正确的方向前进。我在这方面很幼