Используя аутентификацию Windows Role в App.config с WCF

В разное время вы можете измерить время, когда имеете дело с куда.

Вот некоторые решения, которые вы можете попробовать:

  1. Измерьте общее время, используемое cuda: используйте time (), чтобы получить абсолютное значение времени, прежде чем снова использовать какие-либо функции cuda и time () после того, как вы получили результат. Разница будет в реальном времени.
  2. Измеряйте только время вычислений: у cuda есть некоторые накладные расходы при запуске, но если вам это не интересно, поскольку вы будете использовать свой код много раз, не выходя из среды cuda, вы можете измерить его отдельно. Пожалуйста, прочитайте Руководство по программированию CUDA C , в нем будет объяснено использование Событий, которые будут использоваться для синхронизации.
  3. Используйте профилировщик, чтобы получить подробную информацию о том, какая часть программы занимает какое время: время ядра особенно интересно, поскольку оно говорит вам, сколько времени занимают ваши вычисления. Будьте осторожны, когда смотрите на времена API. В вашем примере, cudaEventCreate () тратит много времени, так как это первая функция cuda в вашей программе, поэтому она включает накладные расходы при запуске. Кроме того, cuda [...] Synchronize () на самом деле не требует столько времени для вызова, но включает время ожидания синхронизации.

7
задан Mihai Limbășan 28 December 2008 в 11:43
поделиться

3 ответа

Если я понял хорошо, что Вы хотите выбрать роль во времени выполнения. Это может быть сделано со спросом на разрешение в рамках операции WCF. Например.

public string method1()
{
    PrincipalPermission p = new PrincipalPermission(null, "Administrators");
    p.Demand();
    ...
3
ответ дан 6 December 2019 в 14:11
поделиться

При хостинге сервиса WCF в IIS он будет работать в рабочем процессе ASP.NET, что означает, что можно настроить аутентификацию и авторизацию, как Вы сделали бы с веб-сервисами ASMX:

<system.Web>
    <authentication mode="Windows"/>
    <authorization>
        <allow roles=".\Administrators"/>
        <deny users="*"/>
    </authorization>
</system.Web>

Затем необходимо будет отключить анонимный доступ к конечной точке в IIS и вместо этого включить Windows Integrated Authentication.
В консоли управления IIS Вы делаете это путем перевода в рабочее состояние диалогового окна 'Свойств' для виртуального каталога. Вы затем найдете настройки безопасности на вкладке 'Directory Security'.

Конечно, единственным доступным каналом передачи будет HTTP. Клиенты должны будут обеспечить свои идентификационные данные Windows в запросе на транспортном уровне с этими настройками:

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WindowsSecurity">
                <security mode="Transport">
                    <transport clientCredentialType="Windows" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="https://localhost/myservice"
                  binding="wsHttpBinding"
                  bindingConfiguration="WindowsSecurity"
                  contract="IMyService" />
     </client>
</system.serviceModel>

Обратите внимание, что, если Ваша сервисная конечная точка использует wsHttpBinding затем, необходимо будет также добавить SSL к конечной точке, так как это - требование, осуществленное WCF когда Вы использующий безопасность транспортного уровня.
Если Вы вместо этого идете для basicHttpBinding, Вы затем можете использовать меньше режима безопасной аутентификации, доступного в WCF по имени TransportCredentialOnly, где SSL больше не требуется.

Для более подробной информации вот хороший обзор инфраструктуры безопасности в WCF.

8
ответ дан 6 December 2019 в 14:11
поделиться

Ларс Вильгельмсен написал решение этой проблемы. Посмотри на http://www.larswilhelmsen.com/2008/12/17/configurable-principalpermission-attribute/

4
ответ дан 6 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

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