Saya memiliki dua aplikasi yang menggunakan Keamanan Terpadu. Satu ditugaskan Integrated Security = true
di string koneksi, dan set lainnya Integrated Security = SSPI
.
Apa perbedaan antara SSPI
dan true
dalam konteks Keamanan Terpadu?
Saya memiliki dua aplikasi yang menggunakan Keamanan Terpadu. Satu ditugaskan Integrated Security = true
di string koneksi, dan set lainnya Integrated Security = SSPI
.
Apa perbedaan antara SSPI
dan true
dalam konteks Keamanan Terpadu?
Integrated Security = True
atauSSPI
tidak sama.Integrated Security=true;
tidak bekerja di semua penyedia SQL, itu membuat pengecualian ketika digunakan denganOleDb
penyedia. Jadi pada dasarnyaIntegrated Security=SSPI;
lebih disukai karena bekerja denganSQLClient
&OleDB
penyedia. Saya telah menambahkan jawaban untuk klarifikasi yang lebih baik.Jawaban:
Menurut Microsoft mereka adalah hal yang sama.
sumber
Integrated Security=true;
tidak bekerja di semua penyedia SQL, itu membuat pengecualian ketika digunakan denganOleDb
penyedia.Jadi pada dasarnya
Integrated Security=SSPI;
lebih disukai karena bekerja denganSQLClient
&OleDB
penyedia.Berikut ini set lengkap sintaksis menurut MSDN - Connection String Syntax (ADO.NET)
sumber
Menggunakan Otentikasi Windows
Untuk terhubung ke server database dianjurkan untuk menggunakan Otentikasi Windows, umumnya dikenal sebagai keamanan terintegrasi. Untuk menentukan otentikasi Windows, Anda dapat menggunakan salah satu dari dua pasangan nilai kunci berikut dengan penyedia data. NET Framework untuk SQL Server:
Namun, hanya yang kedua yang berfungsi dengan penyedia data .NET Framework OleDb . Jika Anda mengatur
Integrated Security = true
untuk ConnectionString pengecualian dilemparkan.Untuk menentukan otentikasi Windows di penyedia data. NET Framework untuk ODBC, Anda harus menggunakan pasangan kunci-nilai berikut.
Sumber: MSDN: Bekerja dengan String Koneksi
sumber
Banyak pertanyaan mendapatkan jawaban jika kita gunakan
.Net Reflector
untuk melihat kodeSqlConnection
:) yang sebenarnyatrue
dansspi
sama:EDIT 20.02.2018 Sekarang di .Net Core kita bisa melihat open source-nya di github! Cari metode ConvertValueToIntegratedSecurityInternal:
https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
sumber
ConvertValueToIntegratedSecurityInternal
. Properti itu hanya digunakan ketika provider beradaSqlClient
diSqlClient
,SSPI
&true
sama tetapi tidak ketika klienOleDb
atauOracleClient
. Saya telah mengklarifikasi bahwa dalam stackoverflow.com/a/23637478/704008 dengan referensi msdnKeamanan Terintegrasi = Salah: ID Pengguna dan Kata Sandi ditentukan dalam koneksi. Keamanan Terpadu = benar: kredensial akun Windows saat ini digunakan untuk otentikasi.
Keamanan Terpadu = SSPI: ini setara dengan benar.
Kita dapat menghindari atribut nama pengguna dan kata sandi dari string koneksi dan menggunakan Keamanan Terpadu
sumber
Biarkan saya mulai dengan
Integrated Security = false
false
ID Pengguna dan Kata Sandi ditentukan dalam string koneksi.true
Kredensial akun Windows digunakan untuk otentikasi.Nilai yang diakui adalah
true
,false
,yes
,no
, danSSPI
.Jika
User ID
danPassword
ditentukan dan Keamanan Terpadu diatur ketrue
, makaUser ID
danPassword
akan diabaikan dan Keamanan Terpadu akan digunakansumber
Perhatikan bahwa string koneksi khusus untuk apa dan bagaimana Anda menghubungkan ke data. Ini menghubungkan ke database yang sama tetapi yang pertama menggunakan .NET Framework Data Provider untuk SQL Server. Keamanan Terintegrasi = Benar tidak akan berfungsi untuk OleDb.
Jika ragu gunakan Koneksi Data Visual Studio Server Explorer.
sumber
True hanya valid jika Anda menggunakan pustaka .NET SqlClient. Itu tidak valid saat menggunakan OLEDB. Di mana SSPI adalah bvaid di kedua Anda menggunakan perpustakaan .net SqlClient atau OLEDB.
sumber
Dalam pandangan saya,
Jika Anda tidak menggunakan keamanan Terpadu = SSPI, maka Anda perlu membuat hardcode nama pengguna dan kata sandi dalam string koneksi yang berarti "relatif tidak aman" mengapa karena, semua karyawan memiliki akses bahkan mantan karyawan dapat menggunakan informasi tersebut dengan jahat.
sumber