Token usługi Azure SQL Server Database AD - Django
I z powodzeniem podłączony Azure SQL Server przy użyciu AccessTokenw pyodbc . Tutaj nie korzystałem usernameani passwordnie podłączałem bazy danych. Zamiast tego użyłem attrs_beforedo podania token. Tutaj generuję token automatycznie.
Generowanie tokena:
identity_endpoint = os.environ["IDENTITY_ENDPOINT"]
identity_header = os.environ["IDENTITY_HEADER"]
def get_bearer_token(resource_uri): #Automattically token will generate
token_auth_uri = f"{identity_endpoint}?resource={resource_uri}&api-version=2019-08-01"
head_msi = {'X-IDENTITY-HEADER': identity_header}
resp = requests.get(token_auth_uri, headers=head_msi)
access_token = resp.json()['access_token']
return access_token
Połączenie Pyodbc:
accessToken = bytes(get_bearer_token("https://database.windows.net/"), 'utf-8');
exptoken = b"";
for i in accessToken:
exptoken += bytes({i});
exptoken += bytes(1);
tokenstruct = struct.pack("=i", len(exptoken)) + exptoken;
conn = pyodbc.connect(
"Driver={ODBC Driver 17 for SQL Server};Server=yoursqlserver.database.windows.net,1433;Database=dbName",
attrs_before={1256: bytearray(tokenstruct)});
Teraz problem polega na tym, jak to wykorzystać we frameworku Django do połączenia bazy danych? Nie możemy mieć usernameani passworddo połączenia bazy danych przy użyciu tokenu Azure.
Proszę pomóż mi.
Odpowiedzi
Utworzyłem nowy pakiet do obsługi tej funkcji.
pip install django-mssql-azure-backend
następnie skonfiguruj settings.py
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'mydb',
'HOST': 'myserver.database.windows.net',
'PORT': '',
'IS_AZURE_BASED_TOKEN': True
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
Jeśli używasz lokalnego serwera SQL , użyj tej konfiguracji.
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'mydb',
'USER': 'user@myserver',
'PASSWORD': 'password',
'HOST': 'myserver.database.windows.net',
'PORT': '',
'IS_AZURE_BASED_TOKEN': False
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
Link do Git: https://github.com/shakthifuture/django-mssql-azure-backend
Jeśli napotkasz jakiś problem, zgłoś swój błąd tutaj .