AAD Jwt 令牌在 localhost 但不在服务器上验证

Posted

技术标签:

【中文标题】AAD Jwt 令牌在 localhost 但不在服务器上验证【英文标题】:AAD Jwt token validates on localhost but not on server 【发布时间】:2018-10-12 21:31:52 【问题描述】:

我正在开发 .net core 2.0 web api,并尝试使用 Azure Active Directory 令牌对其进行保护。我的客户端应用程序生成一个令牌并将其发送到要授权的 api。当我在 localhost 中运行我的 api 时一切正常,但是当我将它部署到我们的测试服务器时,突然出现 401 Unauthorized 错误。我检查了部署版本上的配置文件是否正确。服务器设置是否会阻止或更改 AAD 的工作?有人告诉我,它在哪里运行并不重要。这是真的还是服务器配置会以某种方式干扰到达 AAD 进行验证?

【问题讨论】:

您能展示一下您是如何配置 JWT Bearer 处理程序的吗?通常它会验证令牌颁发者是否与预期的 AAD 租户匹配(或在多租户的情况下不检查)并且令牌中的受众 (aud) 是否与有效的受众集匹配。您可以使用jwt.ms 等工具检查这些内容。 我们在服务器上安装了 SSL 证书,然后它就开始工作了。我不知道这是使用 AAD 令牌的要求。有人知道更多吗? 【参考方案1】:

如果您的 AAD 令牌在 localhost 上验证,它很可能不会在已发布的应用程序上验证,反之亦然。在您的应用注册中,确保将回复 URL 设置为您发布的主页 URL(即https://myapp.azurewebsites.net)。

还要检查以确保您的 web.config 与您的应用注册匹配。

【讨论】:

【参考方案2】:

您是否将部署应用程序的 URL 添加为 Azure 门户中应用程序的回复 URL?见What to change when you deploy the sample to Azure

【讨论】:

以上是关于AAD Jwt 令牌在 localhost 但不在服务器上验证的主要内容,如果未能解决你的问题,请参考以下文章

Azure AAD 应用注册:JWT 中缺少可选声明

从 AAD Azure 验证 JWT access_token 失败

.net 核心 2.2 Azure Ad Jwt 令牌

Azure Kubernetes 服务中的 AAD 身份验证

Laravel 或 Lumen JWT 删除默认声明

JWT 刷新和访问令牌