问题
In the following code of my WPF Core
client app , I am trying to use this Azure SQL Database REST API to delete a database in my Azure subscription. But I am getting the error shown below:
Question: What I may be missing, and how can we resolve the issue?
Remark: I found a similar example here, and I'm not sure why my code is not working. The same user name (with SQL Admin access) and password works fine when I connect to the same Azure SQL Db from SSMS - 2019
on my laptop.
Code:
const string uri = "https://management.azure.com/subscriptions/a7686c7e8f-211d-45e5-8f5e-525015b1c881/resourceGroups/myResourceGroup/providers/Microsoft.Sql/servers/mysqlserver/databases/AdventureWorksLT2019?api-version=2019-06-01-preview";
using (var client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes("mySQLAdminUserName:MySQLAdminPassword");
var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.DefaultRequestHeaders.Authorization = header;
var result = await client.DeleteAsync(uri);
System.Diagnostics.Debug.Write(result.Content.ReadAsStringAsync().Result);
}
error="invalid_token", error_description="The authentication scheme of Basic is not supported."
Error Details:
{StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Cache-Control: no-cache
Pragma: no-cache
WWW-Authenticate: Bearer authorization_uri="https://login.windows.net/96eafd5a-8ce3-4c0c-981c-8eac1f59ab96", error="invalid_token", error_description="The authentication scheme of Basic is not supported."
x-ms-failure-cause: gateway
x-ms-request-id: 43f41f28-5a18-42b7-8e70-d6599996ce0e
x-ms-correlation-request-id: 43f41f28-5a18-42b7-8e70-d6599996ce0e
x-ms-routing-request-id: EASTUS:20201010T035452Z:43f41f28-5a18-42b7-8e70-d6599996ce0e
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Date: Sat, 10 Oct 2020 03:54:51 GMT
Connection: close
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 150
}}
回答1:
I think you may be mixing up the authentication.
When connecting using SSMS, you are connecting to the database and authenticating at the database.
To delete the database you need to be connecting to your Azure tenant with an Azure AD account that has sufficient rights to delete an Azure SQL Database.
Try authenticating with your Azure account.
来源:https://stackoverflow.com/questions/64289957/calling-azure-sql-database-rest-api-gives-the-error-the-authentication-scheme-o