Добавьте аутентификацию Kerberos к существующему WebService в asp.net c # - PullRequest
0 голосов
/ 07 ноября 2019

Существует существующий WebService, который подключается к прокси-серверу, и мне нужно добавить в него политику аутентификации Kerberos.

Я знаю, что существуют существующие темы об аутентификации Kerberos, но кто-нибудь может поделиться некоторыми фрагментами кода о том, какдобавить аутентификацию Kerberos на WebService?

Почти во всех темах Kerberos просто обсуждается, как работает аутентификация Kerberos. Заранее спасибо.

1 Ответ

0 голосов
/ 07 ноября 2019

Начните с включения WSE 3 и включите политику. Сделайте это в файле web.config

<configSections>
  <section name="microsoft.web.services3" 

    type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration,
         Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, 
         PublicKeyToken=31bf3856ad364e35" />
</configSections>

<system.web>

  <compilation debug="true">
    <assemblies>
      <add assembly="Microsoft.Web.Services3, Version=3.0.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>

  <webServices>
    <soapExtensionImporterTypes>
      <add type="Microsoft.Web.Services3.Description.WseExtensionImporter,
                    Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, 
                    PublicKeyToken=31bf3856ad364e35" />
    </soapExtensionImporterTypes>
    <soapServerProtocolFactory 

      type="Microsoft.Web.Services3.WseProtocolFactory,Microsoft.Web.Services3,
            Version=3.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </webServices>
</system.web>

<microsoft.web.services3>
  <policy fileName="wse3policyCache.config" />
  <tokenIssuer>
    <statefulSecurityContextToken enabled="false" />
  </tokenIssuer>
</microsoft.web.services3>

Добавьте файл политики и настройте политику: добавьте в проект файл конфигурации FileName.config, а затем добавьте в него следующие теги:

<policies xmlns="http://schemas.microsoft.com/wse/2005/06/policy">
  <policy name="KerberosService">
    <authorization>
      <allow user="Mawhiba\Akram" />
      <deny role="*" />
    </authorization>
    <kerberosSecurity establishSecurityContext="true"

    renewExpiredSecurityContext="true" requireSignatureConfirmation="false"

    messageProtectionOrder="SignBeforeEncryptAndEncryptSignature"

    requireDerivedKeys="true" ttlInSeconds="300">
      <protection>
        <request 

           signatureOptions="IncludeAddressing, IncludeTimestamp, 
                             IncludeSoapBody" 

           encryptBody="true" />
        <response signatureOptions="IncludeAddressing, IncludeTimestamp, 
                                    IncludeSoapBody" 

                  encryptBody="true" />
        <fault signatureOptions="IncludeAddressing, IncludeTimestamp, 
                                 IncludeSoapBody" 

               encryptBody="false" />
      </protection>
    </kerberosSecurity>
    <requireActionHeader />
  </policy>
</policies>

Примените политику к веб-службе: добавив следующий код перед классом службы:

[Policy ("KerberosService")]

Кредит на это идет на Akrumooz.

https://www.codeproject.com/Articles/27554/Authentication-in-web-services-using-C-and-Kerbero

Проверьте ссылку для получения дополнительной информации.

...