Токен AD базы данных SQL Server Azure - Django
Я успешно подключен Azure SQL Server с использованием AccessTokenв pyodbc . Здесь я не использовал usernameни passwordдля подключения базы данных. Вместо этого я использовал attrs_beforeпас 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
Подключение 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)});
Теперь проблема в том, как использовать это в структуре Django для подключения БД? У нас не может быть usernameили passwordдля подключения к базе данных при использовании лазурного токена.
Пожалуйста, помогите мне.
Ответы
Я создал новый пакет для работы с этой функцией.
pip install django-mssql-azure-backend
затем настройте 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',
},
},
}
Если вы используете локальный сервер SQL , используйте эту конфигурацию.
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',
},
},
}
Ссылка Git: https://github.com/shakthifuture/django-mssql-azure-backend
Если вы столкнулись с какой-либо проблемой, сообщите об ошибке здесь .