Exemple #1
0
 public ApplicationController(
     IShapeFactory shapeFactory,
     ISiteService siteService,
     IStringLocalizer <ApplicationController> stringLocalizer,
     IAuthorizationService authorizationService,
     IRoleProvider roleProvider,
     IOpenIdApplicationManager applicationManager,
     UserManager <IUser> userManager,
     IOptions <IdentityOptions> identityOptions,
     IHtmlLocalizer <ApplicationController> htmlLocalizer,
     INotifier notifier,
     ShellDescriptor shellDescriptor)
 {
     _shapeFactory         = shapeFactory;
     _siteService          = siteService;
     T                     = stringLocalizer;
     H                     = htmlLocalizer;
     _authorizationService = authorizationService;
     _applicationManager   = applicationManager;
     _roleProvider         = roleProvider;
     _notifier             = notifier;
     _shellDescriptor      = shellDescriptor;
     _userManager          = userManager;
     _identityOptions      = identityOptions;
 }
 public AccessController(
     IOpenIdApplicationManager applicationManager,
     IOpenIdAuthorizationManager authorizationManager,
     IOpenIdScopeManager scopeManager,
     ShellSettings shellSettings)
 {
     _applicationManager   = applicationManager;
     _authorizationManager = authorizationManager;
     _scopeManager         = scopeManager;
     _shellSettings        = shellSettings;
 }
 public AccessController(
     IOpenIdApplicationManager applicationManager,
     IOpenIdAuthorizationManager authorizationManager,
     IStringLocalizer <AccessController> localizer,
     IOpenIdScopeManager scopeManager,
     ShellSettings shellSettings,
     IOpenIdServerService serverService)
 {
     S = localizer;
     _applicationManager   = applicationManager;
     _authorizationManager = authorizationManager;
     _scopeManager         = scopeManager;
     _shellSettings        = shellSettings;
 }
 public ApplicationController(
     IShapeFactory shapeFactory,
     ISiteService siteService,
     IStringLocalizer <ApplicationController> stringLocalizer,
     IAuthorizationService authorizationService,
     IOpenIdApplicationManager applicationManager,
     IHtmlLocalizer <ApplicationController> htmlLocalizer,
     INotifier notifier,
     ShellDescriptor shellDescriptor)
 {
     New                   = shapeFactory;
     _siteService          = siteService;
     T                     = stringLocalizer;
     H                     = htmlLocalizer;
     _authorizationService = authorizationService;
     _applicationManager   = applicationManager;
     _notifier             = notifier;
     _shellDescriptor      = shellDescriptor;
 }
Exemple #5
0
 public AccessController(
     IOpenIdApplicationManager applicationManager,
     IOpenIdAuthorizationManager authorizationManager,
     IOptions <IdentityOptions> identityOptions,
     IStringLocalizer <AccessController> localizer,
     IOpenIdScopeManager scopeManager,
     ShellSettings shellSettings,
     IOpenIdServerService serverService,
     RoleManager <IRole> roleManager,
     SignInManager <IUser> signInManager,
     UserManager <IUser> userManager)
 {
     T = localizer;
     _applicationManager   = applicationManager;
     _authorizationManager = authorizationManager;
     _scopeManager         = scopeManager;
     _shellSettings        = shellSettings;
     _identityOptions      = identityOptions;
     _signInManager        = signInManager;
     _userManager          = userManager;
     _roleManager          = roleManager;
 }
Exemple #6
0
        public static async Task UpdateDescriptorFromSettings(this IOpenIdApplicationManager _applicationManager, OpenIdApplicationSettings model, object application = null)
        {
            var descriptor = new OpenIdApplicationDescriptor();

            if (application != null)
            {
                await _applicationManager.PopulateAsync(descriptor, application);
            }

            descriptor.ClientId    = model.ClientId;
            descriptor.ConsentType = model.ConsentType;
            descriptor.DisplayName = model.DisplayName;
            descriptor.Type        = model.Type;

            if (!string.IsNullOrEmpty(model.ClientSecret))
            {
                descriptor.ClientSecret = model.ClientSecret;
            }

            if (string.Equals(descriptor.Type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
            {
                descriptor.ClientSecret = null;
            }

            if (model.AllowLogoutEndpoint)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.Endpoints.Logout);
            }

            if (model.AllowAuthorizationCodeFlow || model.AllowHybridFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode);
            }

            if (model.AllowClientCredentialsFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials);
            }

            if (model.AllowHybridFlow || model.AllowImplicitFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.GrantTypes.Implicit);
            }

            if (model.AllowPasswordFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.GrantTypes.Password);
            }

            if (model.AllowRefreshTokenFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.GrantTypes.RefreshToken);
            }

            if (model.AllowAuthorizationCodeFlow || model.AllowHybridFlow || model.AllowImplicitFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.Endpoints.Authorization);
            }

            if (model.AllowAuthorizationCodeFlow || model.AllowHybridFlow ||
                model.AllowClientCredentialsFlow || model.AllowPasswordFlow || model.AllowRefreshTokenFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.Endpoints.Token);
            }

            if (model.AllowAuthorizationCodeFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code);
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.Code);
            }

            if (model.AllowImplicitFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken);

                if (string.Equals(model.Type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
                {
                    descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken);
                    descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token);
                }
                else
                {
                    descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken);
                    descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.Token);
                }
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.IdToken);
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken);
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.Token);
            }
            if (model.AllowHybridFlow)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken);

                if (string.Equals(model.Type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
                {
                    descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken);
                    descriptor.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken);
                }
                else
                {
                    descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken);
                    descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.CodeToken);
                }
            }
            else
            {
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken);
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken);
                descriptor.Permissions.Remove(OpenIddictConstants.Permissions.ResponseTypes.CodeToken);
            }

            descriptor.Roles.Clear();

            foreach (var role in model.Roles)
            {
                descriptor.Roles.Add(role);
            }

            descriptor.Permissions.RemoveWhere(permission => permission.StartsWith(OpenIddictConstants.Permissions.Prefixes.Scope));
            foreach (var scope in model.Scopes)
            {
                descriptor.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope);
            }

            descriptor.PostLogoutRedirectUris.Clear();
            foreach (Uri uri in
                     (from uri in model.PostLogoutRedirectUris?.Split(new[] { " ", "," }, StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty <string>()
                      select new Uri(uri, UriKind.Absolute)))
            {
                descriptor.PostLogoutRedirectUris.Add(uri);
            }

            descriptor.RedirectUris.Clear();
            foreach (Uri uri in
                     (from uri in model.RedirectUris?.Split(new[] { " ", "," }, StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty <string>()
                      select new Uri(uri, UriKind.Absolute)))
            {
                descriptor.RedirectUris.Add(uri);
            }

            if (application == null)
            {
                await _applicationManager.CreateAsync(descriptor);
            }
            else
            {
                await _applicationManager.UpdateAsync(application, descriptor);
            }
        }
 /// <summary>
 /// This recipe step adds an OpenID Connect app.
 /// </summary>
 public OpenIdApplicationStep(IOpenIdApplicationManager applicationManager)
 {
     _applicationManager = applicationManager;
 }
 public OpenIdApplicationRoleRemovedEventHandler(IOpenIdApplicationManager manager)
 => _manager = manager;