Azman returns cached roles to .Net API

Discussion in 'ASP .Net Security' started by Enrique Vargas, Jan 27, 2006.

  1. Hi, I'm using Active Directory as Membership Provider and Azman as
    RoleProvider, everything works fine except that any change made in Azman
    after the ASP.NET 2.0 APP is
    initialized returns a cached version of the roles information. The APP needs
    to know about any change produced while is running. Any idea why Azman is
    returning a cache version of the roles definitions.Thanks.
     
    Enrique Vargas, Jan 27, 2006
    #1
    1. Advertisements

  2. Hi,

    have you tried disabling caching in the roles configuration?
     
    Dominick Baier [DevelopMentor], Jan 28, 2006
    #2
    1. Advertisements

  3. Yes,,

    <roleManager enabled="true" cacheRolesInCookie="false"
    defaultProvider="RoleManagerAzManProvider" cookieRequireSSL="false"
    cookieSlidingExpiration="false" createPersistentCookie="false"
    cookieProtection="All" >
    <providers>
    <add name= xxx />
    </providers>
    </roleManager>
     
    Enrique Vargas, Jan 30, 2006
    #3
  4. Hi,

    ok - i have to look at the source code then.
     
    Dominick Baier [DevelopMentor], Jan 30, 2006
    #4
  5. Web.Config

    1.Connection Strings.
    <add name="ADConnectionString"
    connectionString="LDAP://server.domain.local/CN=Users,DC=domain,DC=local"/>
    <add name="AzManConnectionString"
    connectionString="msldap://server/CN=store,DC=domain,DC=local"/>

    2.<membership defaultProvider="MyADMembershipProvider">
    <providers>
    <add name="MyADMembershipProvider"
    type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web,
    Version=2.0.0.0,
    Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString"
    connectionUsername="domain\Administrator" connectionPassword="pass@word1"
    connectionProtection="Secure" enableSearchMethods="true"
    attributeMapUsername="sAMAccountName" minRequiredPasswordLength="7"
    applicationName="APP" minRequiredNonalphanumericCharacters="1"/>
    </providers>
    </membership>

    3.<roleManager enabled="true" cacheRolesInCookie="false"
    defaultProvider="RoleManagerAzManProvider" cookieTimeout="30"
    cookieRequireSSL="false" cookieSlidingExpiration="false"
    createPersistentCookie="false" cookieProtection="All" >
    <providers>
    <add name="RoleManagerAzManProvider"
    type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web,
    Version=2.0.0.0,
    Culture=neutral,
    publicKeyToken=b03f5f7f11d50a3a" connectionStringName="AzManADAMServer"
    applicationName="APP"/>
    </providers>
    </roleManager>

    4.<authentication mode="Forms">
    <forms loginUrl="Login.aspx" defaultUrl="Default.aspx" timeout="30"
    protection="All" requireSSL="false" slidingExpiration="false"
    cookieless="UseCookies"/>
    </authentication>

    5. <authorization>
    <deny users="?"/>
    </authorization>

    Simple Test Page .aspx.

    If User.Identity.IsAuthenticated Then


    Dim rp As RolePrincipal = CType(User, RolePrincipal)

    Dim roleInfo As StringBuilder = New StringBuilder
    roleInfo.AppendFormat("<h2>Welcome {0}</h2>", rp.Identity.Name)
    roleInfo.AppendFormat("<b>Provider:</b> {0}<BR>",
    rp.ProviderName)
    roleInfo.AppendFormat("<b>Version:</b> {0}<BR>", rp.Version)
    roleInfo.AppendFormat("<b>Expires at:</b> {0}<BR>",
    rp.ExpireDate)
    roleInfo.AppendFormat("<b>Cache List Changed:</b> {0}<BR>",
    rp.CachedListChanged)
    roleInfo.AppendFormat("<b>Is role List Cached:</b> {0}<BR>",
    rp.IsRoleListCached)
    roleInfo.Append("<b>Roles:</b> ")

    Dim roles() As String = rp.GetRoles

    For i As Integer = 0 To roles.Length - 1
    roleInfo.Append(", ")
    roleInfo.Append(roles(i))
    Next

    Me.Label1.Text = roleInfo.ToString

    End If
     
    Enrique Vargas, Jan 30, 2006
    #5
  6. Hi,

    does RolePrincipal.SetDirty() help?
     
    Dominick Baier [DevelopMentor], Jan 30, 2006
    #6
  7. Hi,

    aah - you have to set the cacheRefreshInterval attribute in the provider
    config. It is set to 60 (minutes i guess) by default.

    MSDN says

    "Gets the number of minutes between refreshes of the cache of the policy-store
    data."

    :)
     
    Dominick Baier [DevelopMentor], Jan 30, 2006
    #7
  8. Hi, u are right Dominick the cacheRefreshInterval does the job, thank u!!
     
    Enrique Vargas, Jan 30, 2006
    #8
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.