Custom Authentication, Role and Profile Providers Example

Posted by Community Admin on 03-Aug-2018 14:41

Custom Authentication, Role and Profile Providers Example

All Replies

Posted by Community Admin on 13-Oct-2010 00:00

Greetings,


Is there a working example available of how to implement custom Authentication, Role and Profile Providers? We need to use Sitefinity's one to authenticate users who have access to Sitefinity's backend and we need to use our own custom providers to allow users to register and use several private parts of the website. We also need to be able to grant permissions to the roles provided by this custom provider to the pages we create on the Sitefinity's backend. 

I've been trying to achieve this functionality but been unable to do so so far and as such a working example of how to create these providers and associate them in sitefinity would be quite appreciated. I also would like to keep using Sitefinity's Managers with these providers and as such I can't really inherit the normal ASP.NET Providers but the inherit the Sitefinity's ones instead, correct?

Thanks in advance,
Daniel

Posted by Community Admin on 13-Oct-2010 00:00

Hi Daniel,

Thank you for using our services.

You can take a look at the following webinar which explains how to create custom membership and role providers. The CMS uses ASP.NET Membership and Role providers and may also find these tutorials useful:
Implementing a Membership Provider
Implementing a Role Provider

When you develop the custom providers and add them to your websites you should set the Login control's ProviderName property to be the one of your custom provider.


Best wishes,
Radoslav Georgiev
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

Posted by Community Admin on 14-Oct-2010 00:00

Hello Radoslav,


I've successfully created my custom Role Provider by extending Sitefinity's SitefinityRoleProvider and overrided the needed methods. I've added this custom provider to the Role Provider list in Sitefinity's Administration section (Administration -> Settings -> Security -> Role Providers).

I am, however, unable to see my provider's roles when I go to the Roles section under the Administration, the page isn't even calling the GetAllRoles method on my custom provider. On the Roles page I can only create Roles on the "Default" provider as weel it seems, since the Provider combo box only shows that option.

Is there anything I'm missing?

Thanks in advance,
Daniel

Posted by Community Admin on 14-Oct-2010 00:00

Hi Daniel,

1. Make sure that your provider is correctly registered.

2. Application has been restarted.

3. You have implemented

  • GetUserLinks
  • GetRoles()
methods

4. Your class is public

sample

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Telerik.Sitefinity.Security.Data;
 
namespace TestProvider
    public class Class3 : RoleDataProvider
    
 
        public override Telerik.Sitefinity.Security.Model.Role CreateRole(string roleName)
        
            throw new NotImplementedException();
        
 
        public override Telerik.Sitefinity.Security.Model.Role CreateRole(Guid id, string roleName)
        
            throw new NotImplementedException();
        
 
        public override Telerik.Sitefinity.Security.Model.Role GetRole(Guid id)
        
            throw new NotImplementedException();
        
 
        public override IQueryable<Telerik.Sitefinity.Security.Model.Role> GetRoles()
        
            return (new List<Telerik.Sitefinity.Security.Model.Role>()).AsQueryable();
        
 
        public override void Delete(Telerik.Sitefinity.Security.Model.Role item)
        
            throw new NotImplementedException();
        
 
        public override Telerik.Sitefinity.Security.Model.UserLink CreateUserLink()
        
            throw new NotImplementedException();
        
 
        public override Telerik.Sitefinity.Security.Model.UserLink CreateUserLink(Guid id)
        
            throw new NotImplementedException();
        
 
        public override Telerik.Sitefinity.Security.Model.UserLink GetUserLink(Guid id)
        
            throw new NotImplementedException();
        
 
        public override IQueryable<Telerik.Sitefinity.Security.Model.UserLink> GetUserLinks()
        
          return (new List<Telerik.Sitefinity.Security.Model.UserLink>()).AsQueryable();
        
 
        public override void Delete(Telerik.Sitefinity.Security.Model.UserLink item)
        
            throw new NotImplementedException();
        
    


Regards,
Ivan Dimitrov
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

Posted by Community Admin on 14-Oct-2010 00:00

Hello Ivan,


I've just added the example code which you gave me into my project (changed the namespace to match my project and DLL namespace, Website.Core, and changed the class name to MyRoleDataProvider). 

Then I recompiled the website and fully restarted my ISS server and logged into Sitefinity's Administration, gone to Administration -> Settings -> Security -> Role Providers and added my provider with the following details:

Name: MyRoles
Description: My Roles
ProviderType: Website.Core.MyRoleDataProvider, Website.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Headed to the Administration -> Roles and I was expecting to see a new role there which I added to the GetAllRoles method but only the roles from the Default provider appear, when clicking the Add Role option it also doesn't show the MyRoles provider in the combo box. 

I'm trusting this is the correct procedure or am I missing something important? 

I've tried so far by extending RoleDataProvider, RoleProvider and SitefinityRoleProvider and after registering them on the Sitefinity's administration section they still won't activate.

Thanks in advance,
Daniel

PS: It's now working it seems, can't figure out what I've changed though.

Thank you very much!

Posted by Community Admin on 14-Oct-2010 00:00

Hello Daniel,

Ok let  me know if there are any further issues.

Kind regards,
Ivan Dimitrov
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

Posted by Community Admin on 15-Oct-2010 00:00

Greetings,


If I'm on the roles provider tab and I select my custom provider so that it lists only the roles on that provider I can delete a role perfectly, however if I'm under the "All" tab and I delete a role from my custom provider a success message is shown but the method Delete(Role item) isn't called at all, it's only called if I first select my provider on the providers tab.

Is this a bug or something I'm lacking?

Thanks in advance,
Daniel

Posted by Community Admin on 15-Oct-2010 00:00

Hello Daniel,

This is a bug.

When you try to delete a role and click "delete" button we call RoleManager class and its GetRole method that gets the role with the specified identity. When you are on "All Roles" tab we use the OpenAccessRoleProvider and clicking "delete" does not do anything, because you pass a role that  does not exist in the OpenAccessRoleProvider. The role is removed from your custom provider when you are on the custom role tab, because the provider in this case is correct.

Sincerely yours,
Ivan Dimitrov
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

Posted by Community Admin on 05-Apr-2011 00:00

Hello Ivan,
but when I'm implementing the custom membership provider should I implement

public override IQueryable<Telerik.Sitefinity.Security.Model.Role> GetRoles()
        
            return (new List<Telerik.Sitefinity.Security.Model.Role>()).AsQueryable();
        

so or if in my custom table I got roles I've to return the custom roles? same thing for the userlink?

Thanks

Posted by Community Admin on 05-Apr-2011 00:00

Hello Paolo,

You should return IQueryable of Role objects. I sent a reply to you in the other thread you ask similar question.

www.sitefinity.com/.../simple-example-with-custom-membership-provider.aspx

Best wishes,
Ivan Dimitrov
the Telerik team


Posted by Community Admin on 09-Jun-2011 00:00

Hey Ivan,

I am working on trying to get a Custom Role Provider to work as well and I am confused by the different information floating around the Telerik support site. I have created my Custom Role Provider by extending the base ASP.NET Standard Role Provider, but should I be using the Telerik Role Data Provider class instead as the example shows? Is this example an old one because the Role Provider Wrapper class was not written at the time that this was originally posted? As it is my understanding, the wrapper classes should now provide proper use of a Custom Role Provider based on the ASP.NET one?

Thanks,

Leng

Posted by Community Admin on 14-Jun-2011 00:00

Hi ,

Membership and Role wrapper are now implemented, so if you have a provider based on the ASP.NET SqlMembership provider you should be able to use it with Sitefinity.Check this blog post for samples and more information.

Regards,
Ivan Dimitrov
the Telerik team

Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

Posted by Community Admin on 14-Jun-2011 00:00

Hey Ivan,

Thanks for providing that information.

Leng

Posted by Community Admin on 20-Sep-2012 00:00

It was possible to use a custom role provider on Sitefinity 3.x that was inheriting from System.Web.Security.RoleProvider. The provider was available when added to web.config in

<roleManager defaultProvider="CP" enabled="true" >
   <providers>
      <clear/>
      <add name="CP" connectionStringName="" applicationName="/" type="CP.Providers.CustomRoleProvider, CP.Providers"/>
   </providers>
</roleManager>

Is this still possible in Sitefinity 5.x in order to reuse my old custom role provider (also keeping the Id of type Int not Guid for User and Role entities) or I can only use a custom role provider inheriting from Telerik.Sitefinity.Security.Data.RoleDataProvider?  

Note: My attempt to reuse the old custom role provider from Sitefinity 3.x didn't lead to any success. I could only reuse the custom membership provider after passing guid to the  MembershipUser.ProviderUserKey.

Posted by Community Admin on 20-Sep-2012 00:00

*

Posted by Community Admin on 11-Feb-2015 00:00

Is there any way where we can add Profile providers in web.config?

Posted by Community Admin on 13-Feb-2015 00:00

Hello Aakash,

The Profile providers could be added under:
Administration > Settings > Advanced > UserProfiles > Create new

Regards,
Svetoslav Manchev
Telerik

 
Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
 

This thread is closed