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

No configurator implementation to manage class com.microsoft.jenkins.azuread.AzureAdMatrixAuthorizationStrategy #637

Closed
Tyson-Mike opened this issue Nov 2, 2018 · 3 comments
Labels
stale Used by stale[bot] to mark a issue/PR stale

Comments

@Tyson-Mike
Copy link

Hey guys,

I've been playing with a configuration with Azure AD Authorization and I noticed I'm getting a very similar issue to #469. Its the same error, but not exactly the same problem. I'm using the latest Configuration as Code and Configuration as Code Support plugins (1.2), however I'm still getting:

java.lang.IllegalStateException: No configurator implementation to manage class com.microsoft.jenkins.azuread.AzureAdMatrixAuthorizationStrategy
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.configure(HeteroDescribableConfigurator.java:95)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.check(HeteroDescribableConfigurator.java:101)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.check(HeteroDescribableConfigurator.java:43)
	at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:338)
	at io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:273)
	at io.jenkins.plugins.casc.ConfigurationAsCode.lambda$checkWith$8(ConfigurationAsCode.java:645)
	at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:608)
	at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:645)
	at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:554)
	at io.jenkins.plugins.casc.ConfigurationAsCode.collectIssues(ConfigurationAsCode.java:228)
	at io.jenkins.plugins.casc.ConfigurationAsCode.doCheckNewSource(ConfigurationAsCode.java:210)
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117)
	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:734)

which is the same stack trace as the referenced issue above

Here's the config I was attempting to use:

jenkins:
  authorizationStrategy:
    AzureAdMatrix:
      permissions:
        - "com.cloudbees.plugins.credentials.CredentialsProvider.Create:Jenkins Admin (value)"
        - "com.cloudbees.plugins.credentials.CredentialsProvider.Delete:Jenkins Admin (value)"
        - "com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:Jenkins Admin (value)"
        - "com.cloudbees.plugins.credentials.CredentialsProvider.Update:Jenkins Admin (value)"
        - "com.cloudbees.plugins.credentials.CredentialsProvider.View:Jenkins Admin (value)"
        - "hudson.model.Computer.Build:Jenkins Admin (value)"
        - "hudson.model.Computer.Configure:Jenkins Admin (value)"
        - "hudson.model.Computer.Connect:Jenkins Admin (value)"
        - "hudson.model.Computer.Create:Jenkins Admin (value)"
        - "hudson.model.Computer.Delete:Jenkins Admin (value)"
        - "hudson.model.Computer.Disconnect:Jenkins Admin (value)"
        - "hudson.model.Hudson.Administer:Jenkins Admin (value)"
        - "hudson.model.Hudson.Read:Jenkins Admin (value)"
        - "hudson.model.Item.Build:anonymous"
        - "hudson.model.Item.Build:Jenkins Admin (value)"
        - "hudson.model.Item.Cancel:Jenkins Admin (value)"
        - "hudson.model.Item.Configure:Jenkins Admin (value)"
        - "hudson.model.Item.Create:Jenkins Admin (value)"
        - "hudson.model.Item.Delete:Jenkins Admin (value)"
        - "hudson.model.Item.Discover:Jenkins Admin (value)"
        - "hudson.model.Item.Move:Jenkins Admin (value)"
        - "hudson.model.Item.Read:Jenkins Admin (value)"
        - "hudson.model.Item.Workspace:Jenkins Admin (value)"
        - "hudson.model.Run.Delete:Jenkins Admin (value)"
        - "hudson.model.Run.Replay:Jenkins Admin (value)"
        - "hudson.model.Run.Update:Jenkins Admin (value)"
        - "hudson.model.View.Configure:Jenkins Admin (value)"
        - "hudson.model.View.Create:Jenkins Admin (value)"
        - "hudson.model.View.Delete:Jenkins Admin (value)"
        - "hudson.model.View.Read:Jenkins Admin (value)"
        - "hudson.scm.SCM.Tag:anonymous"
        - "hudson.scm.SCM.Tag:Jenkins Admin (value)"
        - "org.jfrog.hudson.ArtifactoryPlugin.Promote:Jenkins Admin (value)"
        - "org.jfrog.hudson.ArtifactoryPlugin.PushToBintray:Jenkins Admin (value)"
        - "org.jfrog.hudson.ArtifactoryPlugin.Release:Jenkins Admin (value)"
  securityRealm:
    azure:
      clientId: "value"
      clientSecret: "value"
      tenant: "value"

The securityRealm portion works if by itself.
Also worth noting, if we try to use the export configuration option, we see a similar error:

 authorizationStrategy: "FAILED TO EXPORT hudson.model.Hudson#authorizationStrategy:\
    \ \nio.jenkins.plugins.casc.ConfiguratorException: Cannot find configurator for\
    \ type class com.microsoft.jenkins.azuread.AzureAdMatrixAuthorizationStrategy\n\
    \tat io.jenkins.plugins.casc.impl.DefaultConfiguratorRegistry$1.load(DefaultConfiguratorRegistry.java:97)\n\
    \tat io.jenkins.plugins.casc.impl.DefaultConfiguratorRegistry$1.load(DefaultConfiguratorRegistry.java:93)\n\
    \tat com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)\n\
    \tat com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)\n\
    \tat com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)\n\
    \tat com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)\n\t\
    at com.google.common.cache.LocalCache.get(LocalCache.java:3965)\n\tat com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)\n\
    \tat com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)\n\
    \tat io.jenkins.plugins.casc.impl.DefaultConfiguratorRegistry.lookupOrFail(DefaultConfiguratorRegistry.java:70)\n\
    \tat io.jenkins.plugins.casc.ConfigurationContext.lookupOrFail(ConfigurationContext.java:71)\n\
    \tat io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.describe(HeteroDescribableConfigurator.java:154)\n\
    \tat io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.describe(HeteroDescribableConfigurator.java:43)\n\
    \tat io.jenkins.plugins.casc.Attribute.describe(Attribute.java:196)\n\tat io.jenkins.plugins.casc.core.JenkinsConfigurator.describe(JenkinsConfigurator.java:83)

Hopefully there is some easy fix I'm overlooking. If anyone has any advice please let me know.

@Tyson-Mike Tyson-Mike changed the title No configurator implementation to manage class hudson.security.GlobalMatrixAuthorizationStrategy No configurator implementation to manage class com.microsoft.jenkins.azuread.AzureAdMatrixAuthorizationStrategy Nov 2, 2018
@ndeloof
Copy link
Contributor

ndeloof commented Nov 13, 2018

MatrixAuthorizationStrategy support relies on a dedicated adapter component. Any derived implementation like AzureAdMatrixAuthorizationStrategy will also need one (until matrix-auth plugin evolves to be casc-compliant)

@stale
Copy link

stale bot commented Apr 10, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Used by stale[bot] to mark a issue/PR stale label Apr 10, 2019
@jetersen
Copy link
Member

@Tyson-Mike feel free to follow this workflow to report JCasC compliance issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stale Used by stale[bot] to mark a issue/PR stale
Projects
None yet
Development

No branches or pull requests

3 participants