Сессии WCF с HTTPS

Есть ли конкретный тип для различения этих функций (/, *, +, -)?

blockquote>

Я не вижу причины сделать это. Почему \x y -> x+y считается «лучше», чем \x y -> x + y + 1. Конечно, добавление двух чисел - это то, что большинство посчитает более «чистым». Но странно ограничивать себя определенным набором функций. Также возможно, что для некоторой функции \x y -> f x y - 1 «случается» быть равным (+), за исключением того, что компилятор не может это определить.

Проверка типов гарантирует, что нельзя передавать функции, которые работают с числами, учитывая, что список содержит строки и т. Д. Но намеренное ограничение этого в дальнейшем не очень полезно. Почему вы запрещаете программистам использовать вашу функцию для разных целей?

Или есть другой способ успешно написать эту функцию?

blockquote>

Здесь вы описываете функцию scanl :: (b -> a -> b) -> b -> [a] -> [b] . Если мы назовем scanl с scanl f z [x1, x2, ..., xn], то получим список [z, f z x1, f (f z x1) x2, ...]. scanl может быть определено как:

scanl :: (b -> a -> b) -> b -> [a] -> [b]
scanl f = go
    where go z [] = [z]
          go z (x:xs) = z : go (f z x) xs

Таким образом, мы сначала излучаем аккумулятор (который начинается с начального значения), а затем «обновляем» аккумулятор до f z x z старый аккумулятор и x глава списка, и рекурс на хвосте списка.

8
задан Enrico Campidoglio 13 August 2019 в 12:11
поделиться

2 ответа

3) Правда, wsHttpBinding и wsDualHttpBinding являются единственными HTTP-связываниями та поддержка сессии

5) Ложь, для аутентификации сервисных вызывающих сторон, у Вас должна не обязательно быть любая безопасность транспортного уровня (такая как SSL/HTTPS). Единственное требование состоит в том, чтобы настроить IIS для включения Интегрированной аутентификации Windows для виртуального каталога. Затем в WCF у Вас есть три возможности включить этот сценарий:

a) Используйте безопасность транспортного уровня на wsHttpBinding с учетными данными Windows (HTTPS)

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="SecurityEnabledWsHttp">
                <security mode="Transport">
                    <transport clientCredentialType="Windows" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
</system.serviceModel>

b) Используйте безопасность уровня сообщения на wsHttpBinding с учетными данными Windows (HTTP)

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="SecurityEnabledWsHttp">
                <security mode="Message">
                    <message clientCredentialType="Windows" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
</system.serviceModel>

c) Выполните свой сервис под Режимом эмуляции ASP.NET и включите аутентификацию Windows в ASP.NET (HTTP)

<system.web>
    <authentication mode="Windows" />
</system.web>

Обратите внимание в a и b доступ к идентификационным данным вызывающей стороны из сервиса этот путь:

OperationContext.Current.ServiceSecurityContext.WindowsIdentity

6) Правда, безопасность транспортного уровня должна быть включена на wsHttpBinding для использования HTTPS

7) Ложь, Надежные Сессии являются конкретной реализацией Надежного Обмена сообщениями для сессий WCF. Надежным Обменом сообщениями является WS -* стандартная спецификация, разработанная для гарантии доставки сообщений на ненадежную сеть. Можно использовать сессии WCF без Надежного Обмена сообщениями, и наоборот. Сессии включены по контракту на обслуживание с этим атрибутом:

[ServiceContract(SessionMode=SessionMode.Required)]
public interface IMyService {
    // ...
}

Также помните что для поддержания состояния между служебными вызовами, которые необходимо будет явно включить соответствующему режиму экземпляра на реализации контракта на обслуживание:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class MyService : IMyService {
    // ...
}

Существует два вида сессий в WCF: Безопасные Сессии и Надежные Сессии. Настройка по умолчанию и для wsHttpBinding и для netTcpBinding должна использовать Безопасные Сессии.
Для wsHttpBinding это выполняется с безопасностью уровня сообщения при помощи учетных данных клиента, которые являются настройкой по умолчанию для привязки.
Для netTcpBinding вместо этого, сессия устанавливается на транспортном уровне при помощи средств протокола TCP.
Это означает, что просто переключение на wsHttpBinding или netTcpBinding включит поддержку сессий WCF.
Альтернатива должна использовать Надежные Сессии. Это должно явно быть включено в обязательной конфигурации и удаляет требование использования безопасности сообщения для wsHttpBinding. Таким образом, это будет работать:

<bindings> 
    <wshttpbinding> 
        <binding name="ReliableSessionEnabled"> 
            <reliablesession enabled="True" ordered="False" /> 
            <security mode="None" /> 
        </binding> 
    </wshttpbinding> 
</bindings>

8) Ложь, Надежные Сессии используются независимо от настроек безопасности канала передачи.

Для более подробного объяснения взгляните на эту статью.

16
ответ дан 5 December 2019 в 09:26
поделиться

Выполняя на превосходном ответе Enrico, это конфигурации, которые я использую:

Сервис:

<services>
    <service name="Foo.Bar.Service">
        <endpoint name="EndpointHttps"
            address=""
            binding="customBinding" bindingConfiguration="EndpointHttps"
            contract="Foo.Bar.IService" />
    </service>
</services>
<bindings>
    <customBinding>
        <binding name="EndpointHttps">
            <reliableSession />
            <mtomMessageEncoding />
            <httpsTransport />
        </binding>
    </customBinding>
</bindings>

Клиент:

<client>
    <endpoint name="EndpointHttps"
        address="https://server/FooBar/service.svc"
        binding="customBinding" bindingConfiguration="EndpointHttps"
        contract="Foo.Bar.IService" />
</client>
<bindings>
    <customBinding>
        <binding name="EndpointHttps">
            <reliableSession />
            <mtomMessageEncoding />
            <httpsTransport />
        </binding>
    </customBinding>
</bindings>

Примечание: все еще не заставили это работать с аутентификацией Windows все же.

2
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: