Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MembersIdentity doesn't have ClaimsPrincipalFactory #12873

Closed
jbreuer opened this issue Aug 22, 2022 · 3 comments
Closed

MembersIdentity doesn't have ClaimsPrincipalFactory #12873

jbreuer opened this issue Aug 22, 2022 · 3 comments

Comments

@jbreuer
Copy link
Contributor

jbreuer commented Aug 22, 2022

Which exact Umbraco version are you using? For example: 9.0.1 - don't just write v9

10.1

Bug summary

If you're using an external login provider for members it's not possible to add any extra claims in the OnExternalLogin event. This is possible for users because they have a ClaimsPrincipalFactory.

Specifics

This is in the UmbracoBuilder.BackOfficeIdentity.cs:

builder.BuildUmbracoBackOfficeIdentity()
    .AddDefaultTokenProviders()
    .AddUserStore<IUserStore<BackOfficeIdentityUser>, BackOfficeUserStore>(factory => new BackOfficeUserStore(
        factory.GetRequiredService<ICoreScopeProvider>(),
        factory.GetRequiredService<IUserService>(),
        factory.GetRequiredService<IEntityService>(),
        factory.GetRequiredService<IExternalLoginWithKeyService>(),
        factory.GetRequiredService<IOptionsSnapshot<GlobalSettings>>(),
        factory.GetRequiredService<IUmbracoMapper>(),
        factory.GetRequiredService<BackOfficeErrorDescriber>(),
        factory.GetRequiredService<AppCaches>(),
        factory.GetRequiredService<ITwoFactorLoginService>()
    ))
    .AddUserManager<IBackOfficeUserManager, BackOfficeUserManager>()
    .AddSignInManager<IBackOfficeSignInManager, BackOfficeSignInManager>()
    .AddClaimsPrincipalFactory<BackOfficeClaimsPrincipalFactory>()
    .AddErrorDescriber<BackOfficeErrorDescriber>();

As you can see claims will be added/transformed in the AddClaimsPrincipalFactory.

This is in the UmbracoBuilder.MembersIdentity.cs:

services.AddIdentity<MemberIdentityUser, UmbracoIdentityRole>()
    .AddDefaultTokenProviders()
    .AddUserStore<IUserStore<MemberIdentityUser>, MemberUserStore>(factory => new MemberUserStore(
        factory.GetRequiredService<IMemberService>(),
        factory.GetRequiredService<IUmbracoMapper>(),
        factory.GetRequiredService<ICoreScopeProvider>(),
        factory.GetRequiredService<IdentityErrorDescriber>(),
        factory.GetRequiredService<IPublishedSnapshotAccessor>(),
        factory.GetRequiredService<IExternalLoginWithKeyService>(),
        factory.GetRequiredService<ITwoFactorLoginService>()))
    .AddRoleStore<MemberRoleStore>()
    .AddRoleManager<IMemberRoleManager, MemberRoleManager>()
    .AddMemberManager<IMemberManager, MemberManager>()
    .AddSignInManager<IMemberSignInManager, MemberSignInManager>()
    .AddErrorDescriber<MembersErrorDescriber>()
    .AddUserConfirmation<UmbracoUserConfirmation<MemberIdentityUser>>();

As you can see there no extension which adds/transforms the claims.

Steps to reproduce

Follow the steps to reproduce from this issue: #12749

Once you have a project with external login providers for members try to add a claim in the OnExternalLogin event. These claims are never added to the member.

Expected result / actual result

It should be possible to add claims to members the same way as can be done for users.

@github-actions
Copy link

Hi there @jbreuer!

Firstly, a big thank you for raising this issue. Every piece of feedback we receive helps us to make Umbraco better.

We really appreciate your patience while we wait for our team to have a look at this but we wanted to let you know that we see this and share with you the plan for what comes next.

  • We'll assess whether this issue relates to something that has already been fixed in a later version of the release that it has been raised for.
  • If it's a bug, is it related to a release that we are actively supporting or is it related to a release that's in the end-of-life or security-only phase?
  • We'll replicate the issue to ensure that the problem is as described.
  • We'll decide whether the behavior is an issue or if the behavior is intended.

We wish we could work with everyone directly and assess your issue immediately but we're in the fortunate position of having lots of contributions to work with and only a few humans who are able to do it. We are making progress though and in the meantime, we will keep you in the loop and let you know when we have any questions.

Thanks, from your friendly Umbraco GitHub bot 🤖 🙂

@jbreuer
Copy link
Contributor Author

jbreuer commented Aug 22, 2022

@nikolajlauridsen @bergmania @lassefredslund Sorry that I keep spamming you. Since 10.2 already has some fixes for external login providers it would be awesome if this could be fixed as well.

@nikolajlauridsen
Copy link
Contributor

Fixed in #12877, thanks heaps for all the amazing work helping us make external logins better 🎉 💪

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants