Token de AD de Azure SQL Server Database - Django
He conectado con éxito el servidor SQL de Azure usando AccessTokenen el pyodbc . Aquí no usé usernameni passwordpara conectar la base de datos. En lugar de eso, usé attrs_beforepara pasar token. Aquí estoy generando el token automáticamente.
Generación de tokens:
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
Conexión 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)});
Ahora el problema es cómo usar esto en el marco de Django para conectar DB. No podemos tener un usernameo passwordpara conectar la base de datos cuando usamos un token azul.
Por favor, ayúdame.
Respuestas
He creado un nuevo paquete para manejar esta función.
pip install django-mssql-azure-backend
luego configure 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',
},
},
}
Si está utilizando un servidor SQL local , utilice esta configuración.
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',
},
},
}
Enlace de Git: https://github.com/shakthifuture/django-mssql-azure-backend
Si tuvo algún problema, mencione su error aquí .