Ошибка учетных данных при использовании службы WCF, размещенной в службе приложений Azure - PullRequest
0 голосов
/ 25 августа 2018

Я создал службу WCF с помощью «Облачной службы >> Веб-роль WCF» (как показано ниже). ( Это всего лишь тестовое упражнение, которое я проводил, чтобы убедиться, что WCF можно разместить в службе приложений Azure, а подключение через внешнее приложение, созданное с помощью C #, работает. )

[введите описание изображения здесь] 1

Мой WebConfig, как показано ниже:

<?xml version="1.0"?>
<configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          name="AzureDiagnostics">
          <!--<filter type="" />-->
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
  
  <system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <authentication mode="None"/>
  </system.web>
  
  <system.serviceModel>

    <!--DECLARE BINDINGS-->
    <bindings>
      <wsHttpBinding>
        <binding name="CustomBinding"
          openTimeout="00:20:00"
          receiveTimeout="00:20:00" closeTimeout="00:20:00"
          sendTimeout="00:20:00" >
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
            <message algorithmSuite="Default" clientCredentialType="None"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

    <!--DECLARE BEHAVIOUR-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CustomBehaviour">
          <!-- To avoid disclosing metadata information, set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <!--CREATE SERVICE WITH ENDPOINTS-->
    <services>
      <!-- Service For Main Implementation-->
      <service name="DolphinBimUserRegistration.Service1" behaviorConfiguration="CustomBehaviour">
        <endpoint address="DBWsHttp" binding="wsHttpBinding" bindingConfiguration="CustomBinding" contract="DBIMInterface.IDBIMService"/>
      </service>
    </services>
    
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
    -->
    <directoryBrowse enabled="true"/>
  </system.webServer>

</configuration>

После публикации службы WCF в службе приложений Azure я могу создать ссылку на службу. Пока все работает отлично ..

Во время отладки, когда я пытаюсь вызвать базовую функцию «GetData» внутри службы WCF, она часто запрашивает учетные данные пользователя (как показано на рисунке ниже).

введите описание изображения здесь

Мне нужно найти способ доступа к службе Azure Web App, не вводя учетные данные вручную. Я пытался разобраться в этом в течение длительного времени. Кажется, ничего не работает.

  • Я где-то читал, что мы можем ввести учетные данные, полученные с помощью «Get Publish Profile» внутри Azure, можно использовать для входа в систему. Но это не очень хороший подход. Мы не можем вводить такую ​​конфиденциальную информацию в клиентское приложение. Когда клиентское приложение используется разными людьми, они не должны вводить учетные данные для доступа к Azure Web App. Как избежать ввода учетных данных? Как Visual Studio (или клиентское приложение) подключается к веб-приложению Azure?

1 Ответ

0 голосов
/ 25 августа 2018

Я должен спросить - почему вы предпочитаете использовать WCF поверх ASP.NET Web API (или любой другой современной среды RESTFul) для своих служб?OAuth / JWT - это то, что современные сервисы в облаке используют для безопасности.API-интерфейсы защищены идентификатором клиента и секретом, который можно создать в Azure AD.Я не думаю, что вы найдете большую поддержку WCF в Azure.В любом случае, если вы должны использовать WCF, вот ссылка на использование OAuth для WCF: Служба OAuth и WCF SOAP

Чтобы ответить на другой вопрос, Visual Studio использует профиль публикации для развертываниявеб-приложение для Azure.При первой попытке публикации из Visual Studio это позволит вам импортировать профиль публикации.Вы можете получить это на панели инструментов службы приложений Azure или указать Visual Studio на службу приложений в Azure.Этот диалог даст вам возможность сохранить ваши учетные данные.

enter image description here

Вы найдете два типа файлов для каждого профиля публикации: файл .pubxml и файл .pubxml.user.Для публикации в Web Deploy и FTP файл .pubxml.user содержит пароль в зашифрованном виде.Имя пользователя можно найти в файле .pubxml.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...