Token AD del database SQL Server di Azure: Django
Ho connesso con successo Azure SQL Server utilizzando AccessTokenin pyodbc . Qui non ho usato usernameo passwordper connettere il database. Invece di quello, ho usato attrs_beforeper il passaggio token. Qui sto generando automaticamente il token.
Generazione di token:
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
Connessione 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)});
Ora il problema è come usarlo nel framework Django per connettere DB? Non è possibile avere un usernameo passwordper connettere il database quando si usa il token di Azure.
Per favore aiutatemi.
Risposte
Ho creato un nuovo pacchetto per gestire questa funzionalità.
pip install django-mssql-azure-backend
quindi configurare 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',
},
},
}
Se stai usando un server SQL locale , usa questa configurazione.
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',
},
},
}
Collegamento Git: https://github.com/shakthifuture/django-mssql-azure-backend
In caso di problemi, segnalare il problema qui .