响应状态代码不表示成功:401(未授权)调用 Azure Blockchain RESTApi 时

Response status code does not indicate success: 401 (Unauthorized) When calling Azure Blockchain RESTApi

响应状态码不表示成功:401(未授权)调用Azure区块链时

我在调用 Azure Blockchain RESTApi 时遇到上述错误并且我已经检查了所有权限并正确获取访问令牌但是当我调用以获取应用程序时我们遇到了上述错误

我们目前在美国中南部遇到停电 https://azure.microsoft.com/en-us/status/

Azure AD 也受到影响。

您需要监视 Azure 状态页面以获取进一步的更新。不幸的是,在工程缓解问题之前,我们无能为力。 问题得到缓解后,如果您仍然遇到问题,请告诉我们。

问题已通过以下步骤解决:

1) 转到 Azure 门户 -> 应用服务 -> [你的应用服务]-Api

2) 转到 Authentication/Authorization Blade

允许应用服务身份验证并选择允许匿名请求(无操作)并选择 Azure Active Directory 作为身份验证提供程序 点击高级->填写选项如下图:

客户端ID与AzureAD应用注册中的App ID相同 客户端密码与您从 AzureAD 应用程序注册的密钥部分生成的 API 密钥相同 颁发者 URL 是 https://sts.windows.net/{AZUREADTENANTID} ß 您可以从 AzureAD 属性中获取 azuread 租户 ID Allowed Token Audiences 应具有以下值: 一世。 [https://%7bYOURBLOCKCHAINAPIURL-API.azurewebsites.net/.auth/login/aad/callback] https://{YOURBLOCKCHAINAPIURL-API.azurewebsites.net/.auth/login/aad/callback

3) 转到 Azure Active Directory 现在,转到 Azure AD 并导航到 App Registrations,然后单击 BlockChain API ß 或您在第一次配置区块链时为 Azure AD App Registration 选择的名称:

点击设置然后点击回复URLs

在此处添加以下 URL:

区块链WorkbenchURL(应该已经有了) Blockchain API Base URL(其中包含 -API 的那个) Blockchain API Base URL with Callback(如下所示,但使用您自己的 URL 并添加 /.auth/login/aad/callback) getpostman.com/oauth2/callback URL 后面会用到Postman App (An App used to test APIs) 测试API,请按如下添加

4) 保存您的设置,然后转到清单(在区块链 API AzureAD 应用程序属性中的设置旁边)

将清单条目 oauth2allowimplicitflow 设置为 True 保存配置。

就是这样,现在我们要测试API,你可以下载Postman来测试API,Postman的配置有点长,希望你注册此服务免费:https://www.wintellectnow.com/Videos/Watch?videoId=blockchain-on-azure

使用代码:FREETRIAL 注册 – 需要信用卡但不会收费,使用任何预付卡或后付卡,但强烈建议观看此视频,特别是第 53 分钟,因为它解释了如何与Postman一起使用API(记得禁用试用以防止7天后卡被扣款)

这是使用 Gethub 上的 Azure 区块链示例附带的内置 Auth 示例代码生成的示例令牌(您可以从此处下载:https://github.com/Azure-Samples/blockchain/tree/master/blockchain-workbench/auth-samples/bearer-token-retrieval/static ), if you are going to test using it, you must add http://localhost 到上面的回复 URL 和你必须把它放在你的本地主机 IIS 上)

这是来自 Postman 的示例,它显示了如何将令牌添加到请求中 header:

这是授权令牌之前的响应:

授权令牌可用后,这是我调用上图中 GET 部分中指示的 API 后生成的响应:

此外,这是授权成功后的响应 headers:

总而言之,#blockchain API 需要 #OAuth2 身份验证令牌,此令牌不是使用 Swagger UI 或您构建的应用程序传递的,您需要修改您的应用程序以向 AAD OAuth2 进行身份验证以从 AzureAD 获取令牌,然后您需要在请求 header 到 API 中使用此生成的令牌以调用 API.

一个额外的提示,在创建 workbench 时不要 select 默认机器大小,而是选择性能更好的机器,例如:VM 大小:标准 F2s_v2 (2 vcpus, 4 GB 内存)==> 大约 .. 每月 50 美元 .

Discussion on Microsoft tech community site

The original Post of the Author