2016-05-12 6 views
0

Ich versuche, das IdentityServer-Token im von IIS gehosteten WCF-Dienst zu verwenden. Ich habe die Probe von Dominick für den selbst gehosteten WCF-Dienst gesehen. Aber da mein WCF-Dienst in IIS gehostet wird, muss ich die Konfigurationsoptionen für Bindungen und Identitätsserver in der Datei web.config konfigurieren. Kann jemand die Datei web.config mit IdentityServer-Konfigurationen teilen? finden Sie meine aktuelle Konfiguration unter:Verwenden von IdentityServer-Tokens im von IIS gehosteten WCF-Dienst

<?xml version="1.0"?> 
<configuration> 
<appSettings> 
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
</appSettings> 
<system.web> 
<compilation debug="true" targetFramework="4.5.2" /> 
<httpRuntime targetFramework="4.5.2"/> 
</system.web> 
<system.serviceModel> 
<bindings> 
    <ws2007FederationHttpBinding> 
    <binding name="WS2007FederationHttpBinding_IService1"> 
     <security mode="TransportWithMessageCredential"> 
     <message establishSecurityContext="false" issuedKeyType="BearerKey"> 
      <issuer address="https://localhost/dentityServer" /> 
     </message> 
     </security> 
    </binding> 
    </ws2007FederationHttpBinding> 
</bindings> 
<client> 
    <endpoint address="https://localhost/IDPWcfService1/Service1.svc" 
      binding="ws2007FederationHttpBinding" bindingConfiguration="WS2007FederationHttpBinding_IService1" 
      contract="WcfService1.IService1" name="WS2007FederationHttpBinding_IService1" ></endpoint> 
</client> 
<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <!-- To avoid disclosing metadata information, set the values 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="false"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<protocolMapping> 
    <add binding="basicHttpsBinding" scheme="https" /> 
</protocolMapping>  
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 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> 

Antwort

0

ich in der Mitte bin hier gleiche Sache zu tun, müssen Sie Ihre benutzerdefinierte XML-Wrapper-Klasse hinzufügen, um die JWT (die einfach das Sicherheitstoken ist zu kapseln, die übergeben werden bei jedem Aufruf von Kunden zu bedienen, so dass Sie den Client authentifizieren kann)

Sie weitere Details über die in diesem Artikel finden Sie hier: https://leastprivilege.com/2015/07/02/give-your-wcf-security-architecture-a-makeover-with-identityserver3/

Sobald dieser Schritt getan wird Sie das benutzerdefinierte xML-Wrapper, um Web hinzufügen müssen .config wie folgt:

<system.identityModel> 
    <identityConfiguration saveBootstrapContext="true"> 
     <securityTokenHandlers> 
     <remove type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=abcdefg123456789"/>   
     <add type="Web.stuff.ServerSideAuthentication.IdentityServerWrappedJwtHandler, Web.stuff" /> 
     </securityTokenHandlers> 
    </identityConfiguration> 
    </system.identityModel> 

Vergessen Sie auch nicht, eine Deklaration für diesen neuen Abschnitt unter dem Knoten configsections hinzuzufügen.