Как указывалось в одном из комментариев, этот ответ на данный момент довольно устарел. Я регулярно и регулярно использую GSSAPI для аутентификации из Linux в SQL Server 2008 R2, но в основном с помощью диспетчера EasySoft ODBC и (коммерческого) драйвера EasySoft ODBC SQL Server.
В начале 2009 года мы с коллегой смогли подключиться к экземпляру SQL Server 2005 из Solaris 10, используя GSSAPI (учетные данные Kerberos), используя DBB :: Perl, через сборку FreeTDS, связанную с определенной версией библиотек MIT kerberos. Уловка была - и в это немного трудно поверить, но я проверил это, просматривая исходный код FreeTDS - чтобы указать нулевой длины имя_пользователя. Если длина строки user_name равна 0, тогда код FreeTDS попытается использовать GSSAPI (если эта поддержка была скомпилирована). Я не смог сделать это через Python и pyodbc, так как я не мог найти способ заставить ODBC передавать имя пользователя нулевой длины.
Здесь, в коде perl ... существует множество возможностей для поломки файлов конфигурации, таких как .freetds.conf и т. Д. Я, кажется, напоминаю, что принципал должен быть в верхнем регистре, но мои заметки, похоже, не согласны с этим.
$serverprincipal = 'MSSQLSvc/foo.bar.yourdomain.com:1433@YOURDOMAIN.COM';
$dbh = DBI->connect("dbi:Sybase:server=THESERVERNAME;kerberos=$serverprincipal", '', '');
Вам нужно знать, как использовать утилиту setspn, чтобы сервер SQL Server использовал подходящее имя участника безопасности.
У меня нет никаких знаний о стороне Kerberos, потому что наша среда была настроена гуру Kerberos, и у нее есть такие причудливые вещи, как взаимное доверие между доменом AD, в котором работает SQL Server, и Домен Kerberos, в котором работал мой клиент.
Существует некоторый код http://code.google.com/p/libsqljdbc-auth/, который выполняет аутентификацию GSSAPI от Linux к SQL Server, но только на Java. Автор (который, кажется, знает свое дело) также предоставил аналогичный патч для проекта jTDS, который работает с более свежими версиями Java, в которые встроен GSSAPI.
Так что кусочки все есть, это просто большой запутанный беспорядок, пытающийся заставить их всех работать вместе. Я обнаружил, что pyodbc для unixODBC для FreeTDS и odbc для интеграции TDS довольно сложно отследить / отладить. Перл, потому что это была довольно тонкая оболочка для CT-Lib, было намного проще.