Je travaille sur une nouvelle infrastructure de sécurité pour mon organisation. Puisque nous développons des systèmes pour l'organisation interne, j'aimerais utiliser l'authentification Windows, mais pour l'autorisation, nous gérons une base de données Oracle séparée (pour des raisons historiques). Mon idée était d'utiliser PrincipalPermissionAttribute
définirUtilisation de PrincipalPermissionAttribute avec le fournisseur de rôle personnalisé
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
dans Global :: Application_Start et
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authorization>
<deny users="?"/>
</authorization>
<roleManager **defaultProvider="MyRoleProvider"**
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<clear />
<add
name="MyRoleProvider"
type="WcfServiceLibrary1.MyRoleProvider"
connectionStringName="Service1"
applicationName="InfraTest"
writeExceptionsToEventLog="true" />
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding">
<security mode="TransportCredentialOnly">
<transport **clientCredentialType="Windows"** />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="WcfService1.Service1">
<endpoint address="WcfAuthenticationTest" binding="basicHttpBinding"
bindingConfiguration="BasicHttpEndpointBinding" name="BasicHttpEndpoint"
contract="WcfService1.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost/WcfAuthentication"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceAuthorization **principalPermissionMode="UseAspNetRoles"**/>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
dans mon web.config utilisant mon fournisseur de rôle personnalisé qui devrait accéder à la base de données Oracle pour vérifier le rôle . Mais je ne peux pas le faire fonctionner. Y a-t-il un moyen de faire fonctionner le PrincipalPermissionAttribute
ou peut-être que tout le concept est faux? J'ai pensé mettre en œuvre mon CodeAccessSecurityAttribute
personnalisé mais ce n'est pas si simple que je préfère ne pas le faire Quelqu'un at-il une idée du problème? Je serai heureux d'avoir des réponses
Le problème est que je besoin de l'usurpation d'identité afin de vérifier l'autorisation du client –