Существует 3 протокола аутентификации, которые могут использоваться для выполнения аутентификации между Java и Active Directory на Linux или любой другой платформе (и они не просто характерны для сервисов HTTP):
Kerberos - Kerberos обеспечивает Единую точку входа (SSO) и делегацию, но веб-серверам также нужна поддержка SPNEGO для принятия SSO через IE.
NTLM - NTLM поддерживает SSO через IE (и другие браузеры, если они правильно настроены).
LDAP - который связывает LDAP, может использоваться для простой проверки имени учетной записи и пароля.
существует также что-то позвонившее "ADFS", который обеспечивает SSO для веб-сайтов с помощью SAML, который звонит в Windows SSP так на практике, это - в основном окольный способ использовать один из другого выше протоколов.
Каждый протокол имеет, это - преимущества, но как показывает опыт, для максимальной совместимости необходимо обычно пытаться "сделать, как Windows делает". Таким образом, что делает Windows?
Первый, аутентификация между двумя машинами Windows способствует Kerberos, потому что серверы не должны связываться с DC, и клиенты могут кэшировать билеты Kerberos, который уменьшает нагрузку на DCS (и потому что Kerberos поддерживает делегацию).
, Но если у сторон аутентификации оба нет учетных записей домена или если клиент не может связаться с DC, NTLM требуется. Таким образом, Kerberos и NTLM не являются взаимоисключающими, и NTLM не является obsoleted Kerberos. На самом деле до некоторой степени NTLM лучше, чем Kerberos. Обратите внимание, что при упоминании Kerberos и NTLM на одном дыхании я должен также упомянуть SPENGO и Интегрированную аутентификацию Windows (IWA). IWA является простым термином, который в основном означает Kerberos или NTLM или SPNEGO согласовывать Kerberos или NTLM.
Используя LDAP связывают, поскольку способ проверить учетные данные не эффективен и требует SSL. Но до недавнего времени реализация Kerberos и NTLM была трудной настолько использующий LDAP, поскольку импровизированная услуга аутентификации сохранилась. Но в этой точке этого нужно обычно избегать. LDAP является каталогом информации и не услуги аутентификации. Используйте его, поскольку это предназначило цель.
Поэтому, как Вы реализуете Kerberos или NTLM в Java и в контексте веб-приложений в особенности?
существует много крупных компаний как Quest Software и Centrify, которые имеют решения, это конкретно упоминает Java. Я не могу действительно прокомментировать их, поскольку они - общекорпоративные "решения по управлению идентификационных данных" так от взгляда маркетингового вращения на их веб-сайте, трудно сказать точно, какие протоколы используются и как. Необходимо было бы связаться с ними для деталей.
Реализация Kerberos в Java не ужасно тверд, поскольку стандартные библиотеки Java поддерживают Kerberos через org.ietf.gssapi классы. Однако до недавнего времени было главное препятствие - IE не отправляет необработанные маркеры Kerberos, это отправляет маркеры SPNEGO. Но с Java 6, был реализован SPNEGO. В теории необходимо быть в состоянии записать некоторый код GSSAPI, который может аутентифицировать клиенты IE. Но я не попробовал его. Реализация Sun Kerberos была комедией ошибок за эти годы так на основе послужного списка Sun в этой области, я не сделал бы обещаний об их реализации SPENGO, пока у Вас нет той птицы в руке.
Для NTLM, существует Бесплатный проект OSS под названием JCIFS, который имеет Фильтр Сервлета Аутентификации HTTP NTLM. Однако это использует man-in-the-middle метод для проверки учетных данных с сервером SMB, который не работает с NTLMv2 (который медленно становится необходимой политикой безопасности домена). По этой причине и другие, часть HTTP-фильтра JCIFS, как планируют, будет удалена. Обратите внимание, что существует количество ответвлений, которые используют JCIFS для реализации той же техники. Таким образом, если Вы видите другие проекты, которые утверждают, что поддерживали NTLM SSO, проверили мелкий шрифт.
единственный корректный способ проверить учетные данные NTLM с Active Directory использует СЕТЕВОЙ ВХОД В СИСТЕМУ переклички NetrLogonSamLogon DCERPC с Безопасным каналом. Такая вещь существует в Java? Да. Здесь это:
http://www.ioplex.com/jespa.html
Jespa составляет 100% Java реализация NTLM, которая поддерживает NTLMv2, NTLMv1, полные опции целостности и конфиденциальности и вышеупомянутую учетную проверку СЕТЕВОГО ВХОДА В СИСТЕМУ. И это включает Фильтр SSO HTTP, JAAS LoginModule, клиент HTTP, клиент и сервер SASL (с JNDI, связывающим), универсальный "поставщик систем обеспечения безопасности" для создания пользовательских сервисов NTLM и т.д.
Mike
Вы можете поместить атрибут [ScriptIgnore]
на элементы, которые не следует сериализовать. См. Пример Класс ScriptIgnoreAttribute в MSDN .
Extend the JavaScriptConverter
class to not include properties with the NonSerializedAttribute
. Then you can create a custom ActionResult
that uses your JavaScriptConverter
to serialize the object.
This creates a solid and testable class without having to (re)generate wrapper classes or using anonymous objects.
Вы можете создать класс-оболочку, который предоставляет только те свойства, которые вам нужны в JsonResult. В приведенном ниже примере Cow имеет 2 свойства - «Нога» и «Муу». Предположим, вы хотите выставить только "Leg" как свойство. Затем
Dim cw as CowWrapper = New CowWrapper (c)
вернет класс-оболочку, который предоставляет только "Leg". Это также полезно для таких вещей, как DataGridView, если вы хотите отобразить только некоторое подмножество свойств.
Открытый класс Cow
Открытое свойство ReadOnly Leg () as String
get
return "leg"
end get
end Свойство
Открытое свойство ReadOnly Moo ( ) как String
get
return "moo"
end get
end Свойство
end class
Открытый класс CowWrapper
Private m_cow as Cow = Nothing
Public Sub New(ByVal cow as Cow)
m_cow = cow
end Sub
m_cow = cow
Public ReadOnly Property Leg () как String
get
return m_cow.Leg()
end get
Свойство end
end Class
Не совсем тот ответ, который вы ищете, но вы можете обмануть Json ()
, используя следующий код и анонимные классы:
MyModel model = ...;
return Json(new MyModel {model.Prop1, model.Prop2});
Взгляните на JSON.NET от Джеймса Ньютона-Кинга. Он сделает то, что вы ищете.