요구 사항 - asp.net MVC 응용 프로그램에서 azure SQL DB에 연결하려고하고 azure SQL DB에 대한 연결 유형을 "토큰 기반" 아래는 내 끝에서 준비가 완료된 것입니다. SQL AAD 토큰 기반 인증 - 사용자 'NT AUTHORITY ANONYMOUS LOGON에 대해 로그인하지 못했습니다.
. 인증서 기반 인증을 사용하여 AAD 응용 프로그램 (예 : MTSLocal)을 만들었습니다.b. SQL에서 위 AAD에 대한 권한을 추가했습니다.
CREATE USER [MTSLocal] FROM external provider;
c.In 코드 단계에서 클라이언트 ID (단계 a에서 가져옴)를 사용하여 액세스 토큰을 얻으려고하고 인증서와 연결하려는 리소스가 "https://database.windows.net"입니다. 샘플 코드 -
string authority = string.Format(System.Globalization.CultureInfo.InvariantCulture, "https://login.windows.net/{0}",
"xxxx.onmicrosoft.com");
var authContext = new AuthenticationContext(authority);
AuthenticationResult result = null;
result = await authContext.AcquireTokenAsync("https://database.windows.net", AssertionCert);
token = result.AccessToken;
d를 참조하십시오. 액세스 토큰을 검색 할 수 있지만 SQL 연결을 열려고 할 때 위와 같은 오류가 발생했습니다.
sqlBuilder["Data Source"] = serverName;
sqlBuilder["Initial Catalog"] = databaseName;
sqlBuilder["Connect Timeout"] = 30;
string accesstoken = GetAccessToken();
using (SqlConnection connection = new SqlConnection(sqlBuilder.ConnectionString))
{
try
{
connection.AccessToken = accesstoken;
connection.Open();
}
catch (Exception ex)
{
}
}
이 문제에 도움이된다면 도움이 될 것입니다.
일부 코드 및 기타 정보를 보지 않고도 누구나 쉽게 의미있는 대답을 할 수 있습니다. 귀하의 질문에 무엇을 넣을 지에 대한 안내는 https://stackoverflow.com/help/how-to-ask를 참조하십시오. – ADyson
그 .. 죄송합니다. - https://stackoverflow.com/questions/38862095/acquiring-azure-ad-token-for-azure-sql-server에서 코드 샘플을 사용했습니다. 하지만 connection.open() 줄 내가 위에서 말한 예외의 코드는 예외이다. connection.AccessToken = accessToken; // 액세스 토큰을 성공적으로 가져올 수 있습니다. connection.Open(); –
아키텍처를보다 구체적으로 설명하십시오. 클라이언트, Azure DC, SQL 서버 및 모든 웹 서버 또는 SQL 서버 앞에있을 수있는 다른 유형의 응용 프로그램 서버. –