How does SPN with Kerberos роботи
Застосовуючи фігуру з того, як вона працює, але інформація, це будь-яка проблема, або не може.
3 Answers 3
Ok a more verbose answer:-
- SPN - Service Principal Name. Це являє собою identifier, що поєднується з будь-яким аккаунтом в KDC implementation(AD, OpenLDAP etc). Принципово, якщо ваш акаунт acts as service to which a client authenticates, the client has to specify "who" it wants to communicate to. Цей "who" identifier is the SPN. Це є strict definition. Багато людей покликані зателефонувати за допомогою браузера (UPN - User Principal Name) для служби як SPN. Це happens when the service itself may act as a client( google the delegation scenario ). Це не strictly correct but widely assumed true.
- Kerberos є protocol для authentication. It is a name for framework. Це використовується для третьої частини сервера (називається KDC або Key Distribution Centre) і містить рядки з положень про придбання повідомлень (tokens of authentication). It is really complicated so http://en.wikipedia.org/wiki/Kerberos_(protocol)
- To some extent you got this right. GSSAPI is an API but SPNEGO is not. GSSAPI є technically agnostic до auth mechanismus use, але найбільші folks use it для kerberos authentication. SPNEGO is pseudo mechanismus, в несхожих його розголошує RFC для authentication базується на комунікації в HTTP domain. Strictly speaking SPNEGO є specification but most folks as consider it as an implementation. Для додатку, Sun і IBM JDK забезпечує "mechanism providers" для SPNEGO генерування течії, але GSSAPI використовується як і раніше call it. Це є багато проектів (Tomcat як Server is and example, що веде до top of my head and one of the folks whe answered this question developed it).
- SSPI є аналогом до GSSAPI в windows. Існує різні API, які беруть до деякої дуже подібної до GSSAPI.
Якщо я мушу скористатися моїм представником, щоб реєструвати його застосування до того, як Windows integrated.Чи потрібно, щоб він створив connection layer для SPN, використовуючи SPNEGO? Правильно це використовує тільки SASL для Kerberos authentication до SPN, який не є oky with IT.
Ok so from what I understand your vendor needs to be authenicated against you(i mean your code is the server). SPNEGO буде підтримувати її Kerberos або NTLM і ви реєструвати свою SPN в KDC implementation(assuming its a Kerberos based authentication). I dont know how SPNs є registered і якщо ви використовуєте NTLM auth. SASL є завантажений над GSSAPI і він не має наміру з SPNEGO. I wowld prefer if you post post your code.
Ох і це також залежить від того, що ваші дизайнери application design is. Якщо ваші vendors app використовуються HTTP базується на кому тобі, вони повинні комунікувати до вас через SPNEGO. classic example is browser auth. Браузери мають hard format SPN, щоб їх підключити - HTTP/canonicaldnsnameofserver.realm.com. Це не може бути змінено і сервери мають для підтримки цього, щоб визначити їх SPN як вище. However this is not correct always. Для того, щоб я змінив curl проект для роботи клієнта, в якому target SPNs є arbitrary. github.com/Khalian/CURL
В іншому випадку GSS-API має notion of keytabs. Це є тільки Kerberos feature.
Yes, ви є право, і fixed that part of the comment. Thanks. I в основному використовуйте GSSAPI з MIT Kerberos в tandem і має бути виконано в стрій API між SSPI і MIT Kerberos. So i got mixed up. My apologies
SPN simple means 'Server Principal Name' і є AD або Kerberos slang для служби ви намагаєтеся до authenticate against.
Kerberos is a user authentication service, more or less yes. Це також забезпечує функцію безпеки для мережевих служб і дзвінків між службами.
SPNEGO-GSSAPI* is a kind of strange beast. GSSAPI (Generic Security Service Application Program Interface) є API до (в принципі) різних сервісів authentication, його реалізує механізми використання механізмів. Often the only mechanism available will be Kerberos though.Це є звичайним API для створення 3-ї частини програм до Kerberos, коли ви на Unix (визначено в різних RFCs, для прикладу RFC 2743 )
On the windows platform SSPI is the generic layer, so it compares to GSSAPI.
SPNEGO is kind of a strange hybrid. It is a mechanism to be used in SSPI, HTTP Auth or GSSAPI які несвідомі інший інший протокол (для прикладу Kerberos або NTLM і ви є на Windows), це basically усвідомити, що this GSSAPI є в різних умовах.
Typical uses of SPNEGO є HTTP authentication для Windows Domain, для прикладу IIS використовується, якщо ви використовуєте 'Integrated windows authentication'. Це також використовує, коли вибрано 'Negotiate' options for SSPI. See for example RFC 4559
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN
Всім привіт, сьогодні хочу вам розповісти як налаштовувати SPN в Active Directory, на прикладі SPN для MS SQL Server 2012. У процесі завантаження нового встановленого екземпляра SQL Server в його лозі можна виявити помилку реєстрації SPN, якщо служби SQL Server запускаються від імені користувача доменного облікового запису. Необхідно зареєструвати ім'я учасника-служби (SPN - Service Principal Name) для облікового запису служби SQL Server, щоб у роботі служби могла використовуватися автентифікація за допомогою протоколу Kerberos.
Для того щоб отримати інформацію про те, що на доменному обліковому записі, від імені якого проводиться запуск SQL Server, дійсно не зареєстровано SPN пов'язаних з SQL за допомогою утиліти SetSPN виконаємо команду:
У нашому прикладі KOM-AD01-DB03 - це ім'я сервера SQL, а s-KOM-AD01-DB03-SQL01 - це ім'я доменного облікового запису користувача, з якого запускаються служби SQL Server на цьому сервері.
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN-02
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN-03
відкривши властивості відповідного облікового запису та перейшовши на вкладку редагування атрибутів можна переглянути та змінити значення атрибута servicePrincipalName
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN-04
Для того щоб забезпечити потрібний для коректної роботи Kerberos зміст атрибуту servicePrincipalName можна піти двома шляхами:
- Створити необхідний запис SPN вручну за допомогою утиліти SetSPN. Синтаксис команд буде наступним:
setspn –S MSSQLSvc/SQLServerFQDN:1433 DomainSQLAccount
setspn –S MSSQLSvc/SQLServerFQDN DomainSQLAccount
приклад setspn -S MSSQLSvc/server19.contoso.com:1433 sqlservice (ім'я запуску)
setspn -S MSSQLSvc/server19.contoso.com:MSSQL2012 sqlservice
- Дозволити обліковий запис, від імені якого запускається SQL Server, динамічне оновлення атрибута servicePrincipalName, видавши дозволи на читання та запис атрибута servicePrincipalName. Щоб виконати другий варіант, відкриємо оснастку ADSIEdit.msc, перейдемо до властивостей об'єкта – облікового запису. На закладці “Безпека” (Security) натисніть кнопку “Додатково” (Advanced)
У діалоговому вікні «Додаткові параметри безпеки» (Advanced Security Settings) натисніть кнопку «Додати» (Add)
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN-06
введемо SELF і у вікні, що відкрилося, перейдемо на закладку «Властивості» (Properties). У вікні вибору області застосування виберемо пункт "Тільки цей об'єкт" (This object only) і у списку дозволів зазначимо два пункти:
- Read servicePrincipalName
- Write servicePrincipalName
Збережемо внесені зміни і потім, при запуску служби SQL Server, зможемо переконатися, що в журналі реєстрації подій з'явився запис про успішне створення SPN
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN-08
а також побачимо що висновок утиліти SetSPN змінився
Як налаштувати SPN (Service Principal Name) у SQL Server та динамічна реєстрація SPN-09
Як видалити SPN
setspn -d MSSQLSvc/server19.ваш домен:1433 ім'я облікового запису від імені якого запускається sql
setspn -d MSSQLSvc/server19.ваш домен:MSSQL2012 ім'я облікового запису від імені якого запускається sql
setspn -D MSSQLSvc/virt163.contoso.com:1433 sqlservice
setspn -D MSSQLSvc/virt163.contoso.com sqlservice
Ось приклад ситуації коли потрібне видалення. Раніше був сервер virt105 і використовувався під одні потреби, сервер видалений. Після цього ж імені virt105 підняли інший сервер, і зіткнулися з тим, що SPN вже був зайнятий. Ось запит на перевірку SPN у virt105
Далі спроба його зареєструвати, і бачимо, що він уже є на обліковий запис Сьоміна Івана
Після видалення старого SPN, по-новому все зареєструвалося.
Популярні Схожі записи:
- База даних диспетчера облікових записів на сервері не містить запису
- Помилка запуску служби "error 1069 the service did not start"
- Як перемістити базу даних ADFS SQL з одного сервера на інший
- NLB: Access denied. Error connecting to server
- Як видалити sIDHistory у об'єктів Active Directory
- Помилка the request failed or the services did not respond in a timely fashion