响应状态代码不指示成功:401(未经授权)在调用Azure区块链时
调用Azure Blockchain RESTApi时出现错误,并且已经检查了所有权限并正确获取了访问令牌,但是当我致电获取应用程序时,我们遇到了上述错误
答案 0 :(得分:0)
我们目前在美国中南部遇到停电的情况 https://azure.microsoft.com/en-us/status/
天蓝色的广告也会受到影响。
您将要监视Azure状态页以获取进一步的更新。不幸的是,在工程解决问题之前,我们无法采取任何措施。 解决问题后,如果您仍然看到问题,请告诉我们。
答案 1 :(得分:0)
按照以下步骤解决了该问题:
1)转到Azure门户-> App Service-> [您的App Service] -Api
2)进入身份验证/授权刀片
允许应用程序服务身份验证,然后选择“允许匿名请求(不执行任何操作)”,然后选择“ Azure Active Directory”作为身份验证提供程序 单击高级->如下图所示填充选项:
客户端ID与AzureAD应用程序注册中的应用程序ID相同 客户端密钥与您从AzureAD应用程序注册的“密钥”部分生成的API密钥相同 颁发者URL为https://sts.windows.net/ {AZUREADTENANTID}ß您可以从AzureAD属性中获取azuread租户ID。 允许的令牌受众应具有以下值: 一世。 [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选择的名称:
单击“设置”,然后单击“回复URL”
在其中添加以下URL:
Blockchain Workbench URL(应该已经存在) 区块链API基本URL(其中包含-API的URL) 带回调的Blockchain API基本URL(如下所示,但使用您自己的URL并添加/.auth/login/aad/callback) 稍后将使用getpostman.com/oauth2/callback URL通过Postman App(用于测试API的应用程序)来测试API,请按如下所示进行添加
4)保存设置,然后转到清单(Blockchain 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),如果要使用它进行测试,则必须将http://localhost添加到上面的Reply URL中,您必须将其放置在本地IIS上)
这是Postman的示例,显示了如何将令牌添加到请求标头:
一旦授权令牌可用,这就是我调用上图中GET部分中指示的API后生成的响应:
此外,这是成功授权后的响应标头:
总结起来,#blockchain API需要#OAuth2身份验证令牌,此令牌未使用Swagger UI或您构建的应用程序传递,您需要修改应用程序以对AAD OAuth2进行身份验证以从AzureAD获取令牌,那么您需要在API的请求标头中使用此生成的令牌,以调用API。
另一个提示,创建工作台时不要选择默认计算机大小,而是选择性能更好的计算机,例如:VM大小:标准F2s_v2(2 vcpus,4 GB内存)==>每月约50美元。