To be able to follow the steps below you'll need to have Windows Server 2016 or later with the "Active Directory Federation Services (ADFS)" feature enabled.
server: type: pixilab_server auth: urlResolver: null ajaxRequestResolver: null callbackUrl: http://[BLOCKS-DOMAIN-OR-IP]/rest/auth/callback rolesOwner: attributes rolesPath: roles clients: - org.pac4j.oidc.client.OidcClient: configuration: discoveryURI: [PROTOCOL]://[ADFS-SERVER]/adfs/.well-known/openid-configuration clientId: [CLIENT-ID] secret: [CLIENT-SECRET] clientAuthenticationMethod: client_secret_basic scope: openid servlet: security: - matchers: internalMatcher clients: OidcClient authorizers: isAuthenticated
Make sure you maintain all indentation as shown above, using only spaces for indentation. Here's more about Blocks' configuration file and it syntax.
Since the groups you've configured for your users in your windows server does not match the roles used by Blocks, you have to add role mappings to the Blocks configuration file. Do this by defining a server.auth.rolesMapping parameter where the keys are the group names of your windows server configuration and the values the roles Blocks know about. For example:
rolesMapping: SomeGroup1: Admin SomeGroup2: Manager SomeGroup3: Creator SomeGroup4: Editor SomeGroup5: Contributor SomeGroup6: Staff
In the section named Configure OpenID Connect to provide user groups to Blocks we add a configuration that will provide Blocks with all of the user's groups. This may not be wanted since there can be thousands of these in an already existing windows server configuration. In other cases there will exist groups that doesn't have anything to to with Blocks at all. To filter the groups provided to Blocks, follow the steps below.
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("roles"), query = ";tokenGroups;{0}", param = c.Value);
c:[Type == "roles", Value =~ "^Blocks.+"] => issue(claim = c);