Giter Site home page Giter Site logo

libertymutual / ssh-key-enforcer-stash Goto Github PK

View Code? Open in Web Editor NEW
6.0 15.0 7.0 22.79 MB

Layers additional controls over Bitbucket's SSH key features that enforce the stronger controls required in an enterprise environment.

License: Apache License 2.0

Java 95.71% JavaScript 1.43% HTML 2.86%
bamboo atlassian ssh

ssh-key-enforcer-stash's Introduction

SSH Key Enforcer for BitBucket Server

What it do..

Layers additional controls over Bitbucket's SSH key features that enforce the stronger controls required in an enterprise environment.

Features

  • Blocks any keys being added directly to Projects or Repositories

  • All keys must be created for specific users (system or human), and inherit their access.

  • Blocks upload of existing keys and generates new RSA 2048 bit keys for the user.

  • User can download public and private key pair, and regenerate as needed.

  • Special users designated by a Group may add keys directly, additionally a dedicated ID may be named as "bamboo". This supports the current Bamboo/Stash integration which generates user keys when repositories are created in bamboo. This Group and User should only be granted to admins or system accounts that provision pipelines.

  • Enforces Key expiration policy

  • To mitigate risk, all user keys are expired after N days(configurable), and users are notified via email to re-generate a new pair.

Rules

Key Types

The system recognize multiple key types. (See SshKeyPairEntity.KeyType enum for latest)

  • USER: A key generated by the plugin on user behalf via UI or API.
  • BAMBOO: A key presented to stash by a user name matching the configured 'bambooUser'. This is intended to allow a system ID used in pipeline provisioning to establish a link between Bamboo and Stash.
  • BYPASS: A key presented to stash by a user in the configured 'authorizedGroup'. This group is intended to allow a human admins who may manually establish a link between Bamboo and Stash, or have other lifecyle use that is managed external to this plugin.

Key Limits

Any given user will be allowed:

  • 1 active USER key, new replace the old
  • Unlimited BAMBOO types allow only a single active Key per user. New ones are added, not replaced.
  • Unlimited BYPASS types allow only a single active Key per user. New ones are added, not replaced.

Key Rotation

USER is only key type currently rotated. BAMBOO requires code changes in bamboo's StashRepository implementation to support automatic re-generation (see issue #8). BYPASS keys are intentionally avoided with the assumption they are only enabled/authorized when an external system is in place to manage those keys.

Admin Config

Admins may update the values capture in JSON below via /rest/enterprisessh/1.0/config

{
  "authorizedGroup": "admins",
  "bambooUser":"bamboolinker",
  "daysToKeepUserKeys": 30,
  "daysToKeepBambooKeys": 365,
  "millisBetweenRuns": 86400000,
  "internalKeyPolicyLink":"https://someplace.com/page"
}

NOTE: daysToKeepBambooKeys is not currently enforced - See Issue #8

NOTE: Set any property to 0/null to disable

License

Copyright 2015 Liberty Mutual Insurance

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Contributing

Prerequisites

First install and run Docker locally

Running Locally

  • Faster start, single instance $ atlas-run --testGroup default
  • Slower start, testing Data Center $ mvn docker:start && atlas-run --testGroup clusterTestGroup

Testing Locally

  • Testing against Data Center cluster $ atlas-integration-test -DtestGroups=clusterTestGroup
  • Testing against single server instance $ atlas-integration-test -DtestGroups=default

Reloading Plugin Changes to Save Time

If one of the two test groups is already running locally you may save time and reload any plugin changes by opening a separate terminal in the project root directory and running $ atlas-package -DskipTests

Ex.

  1. Start cluster $ mvn docker:start && atlas-run --testGroup clusterTestGroup
  2. Make a code change and run $ atlas-package -DskipTests to load the new plugin jar without restarting the application

Troubleshooting

  • When database does not get cleaned up properly after shutting down clusterTestGroup, run $ mvn docker:stop
  • When starting clusterTestGroup throws address already in use exception, try changing the port in the pom. Ex. change http port of second node to 7991 and restart cluster

SSH Key Enforcer for Stash is built using Atlassian SDK, here's some info on that...

Here are the SDK commands you'll use immediately:

  • atlas-run -- installs this plugin into the product and starts it on localhost
  • atlas-debug -- same as atlas-run, but allows a debugger to attach at port 5005
  • atlas-cli -- after atlas-run or atlas-debug, opens a Maven command line window: - 'pi' reinstalls the plugin into the running product instance
  • atlas-help -- prints description for all commands in the SDK

Full documentation is always available at:

https://developer.atlassian.com/display/DOCS/Introduction+to+the+Atlassian+Plugin+SDK

ssh-key-enforcer-stash's People

Contributors

ccunniff avatar davidehringer avatar eddiewebb avatar jdesulme avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ssh-key-enforcer-stash's Issues

Plugin is throwing errors reporting that Key expiry has failed!

We're running Bitbucket 4.13.1 and we're seeing the following error in our logs. I wonder if there an endpoint available that shows a historical overview of keys that have been rotated.

2017-03-20 15:36:29,293 ERROR [Caesium-1-4]  c.l.f.s.s.s.KeyRotationJobRunner Key expiry failed!
java.lang.IllegalStateException: plugin [{com.lmig.forge.stash.ssh.stash-ssh-key-enforcer}] invoking ActiveObjects before <ao> configuration module is enabled or plugin is missing an <ao> configuration module. Note that scanning of entities from the ao.model package is no longer supported.
        at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.delegate(TenantAwareActiveObjects.java:165) ~[na:na]
        at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.find(TenantAwareActiveObjects.java:296) ~[na:na]
        at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) ~[na:na]
        at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) ~[na:na]
        at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) ~[na:na]
        at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) ~[na:na]
        at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) ~[na:na]
        at com.lmig.forge.stash.ssh.ao.EnterpriseKeyRepositoryImpl.listOfExpiredKeys(EnterpriseKeyRepositoryImpl.java:95) ~[plugin_2434508853149467232_stash-ssh-key-enforcer-2.0.0_1489690730000.jar:na]
        at com.lmig.forge.stash.ssh.keys.EnterpriseSshKeyServiceImpl.replaceExpiredKeysAndNotifyUsers(EnterpriseSshKeyServiceImpl.java:122) ~[plugin_2434508853149467232_stash-ssh-key-enforcer-2.0.0_1489690730000.jar:na]
        at com.lmig.forge.stash.ssh.scheduler.KeyRotationOperation.perform(KeyRotationOperation.java:30) ~[plugin_2434508853149467232_stash-ssh-key-enforcer-2.0.0_1489690730000.jar:na]
        at com.lmig.forge.stash.ssh.scheduler.KeyRotationOperation.perform(KeyRotationOperation.java:21) ~[plugin_2434508853149467232_stash-ssh-key-enforcer-2.0.0_1489690730000.jar:na]
        at com.atlassian.stash.internal.user.DefaultEscalatedSecurityContext.call(DefaultEscalatedSecurityContext.java:51) ~[bitbucket-service-impl-4.13.1.jar:na]
        at com.lmig.forge.stash.ssh.scheduler.KeyRotationJobRunner.runJob(KeyRotationJobRunner.java:54) ~[plugin_2434508853149467232_stash-ssh-key-enforcer-2.0.0_1489690730000.jar:na]
        at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:153) [atlassian-scheduler-core-1.7.0.jar:na]
        at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:118) [atlassian-scheduler-core-1.7.0.jar:na]
        at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:97) [atlassian-scheduler-core-1.7.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:401) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:396) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:349) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:255) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:252) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:65) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:59) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:34) [atlassian-scheduler-caesium-1.3.0.jar:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
        ... 16 frames trimmed```

SQL Exception Error occurring during the SshKeyCreatedEvent

The following error is being thrown in Stash 3.11.3

2017-03-22 10:30:39,948 ERROR [AtlassianEvent::thread-12] RandomUser @EWV8VAx630x33149209x1 10.X.X.X,X.X.X.X, "POST /rest/keys/1.0/projects/XXXXXX/repos/vision-process/ssh HTTP/1.1" c.a.s.i.e.AsyncBatchingInvokersTransformer There was an exception thrown trying to dispatch event 'com.atlassian.stash.ssh.SshKeyCreatedEvent[source=com.atlassian.stash.internal.key.ssh.DefaultSshKeyService$9@31f06eeb]' for the invoker 'SingleParameterMethodListenerInvoker{method=public void com.lmig.forge.stash.ssh.events.GeneralEventListener.mylistener(com.atlassian.stash.event.StashEvent), listener=com.lmig.forge.stash.ssh.events.GeneralEventListener@5f4fc609}'.
java.lang.RuntimeException: There was a SQL exception thrown by the Active Objects library:
Database:
	- name:PostgreSQL
	- version:9.4.7
	- minor version:4
	- major version:9
Driver:
	- name:PostgreSQL Native Driver
	- version:PostgreSQL 9.4 JDBC4.1 (build 1201)
org.postgresql.util.PSQLException: ERROR: value too long for type character varying(767)
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:54) ~[atlassian-event-2.3.5.jar:na]
	at com.atlassian.stash.internal.event.AsyncBatchingInvokersTransformer$AsyncInvokerBatch.invoke(AsyncBatchingInvokersTransformer.java:100) ~[stash-platform-3.11.3.jar:na]
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1$1.run(AsynchronousAbleEventDispatcher.java:48) [atlassian-event-2.3.5.jar:na]
	at com.atlassian.sal.core.executor.ThreadLocalDelegateRunnable.run(ThreadLocalDelegateRunnable.java:38) [sal-core-2.13.4.jar:na]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_60]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60]
	... 1 frame trimmed
Caused by: com.atlassian.activeobjects.internal.ActiveObjectsSqlException: There was a SQL exception thrown by the Active Objects library:
Database:
	- name:PostgreSQL
	- version:9.4.7
	- minor version:4
	- major version:9
Driver:
	- name:PostgreSQL Native Driver
	- version:PostgreSQL 9.4 JDBC4.1 (build 1201)
org.postgresql.util.PSQLException: ERROR: value too long for type character varying(767)
	at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.create(EntityManagedActiveObjects.java:113) ~[na:na]
	at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.create(TenantAwareActiveObjects.java:299) ~[na:na]
	at com.lmig.forge.stash.ssh.ao.EnterpriseKeyRepositoryImpl.saveExternallyGeneratedKeyDetails(EnterpriseKeyRepositoryImpl.java:69) ~[na:na]
	at com.lmig.forge.stash.ssh.keys.EnterpriseSshKeyServiceImpl.isKeyValidForUser(EnterpriseSshKeyServiceImpl.java:73) ~[na:na]
	at com.lmig.forge.stash.ssh.keys.EnterpriseSshKeyServiceImpl.removeKeyIfNotLegal(EnterpriseSshKeyServiceImpl.java:82) ~[na:na]
	at com.lmig.forge.stash.ssh.events.GeneralEventListener.mylistener(GeneralEventListener.java:53) ~[na:na]
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36) ~[atlassian-event-2.3.5.jar:na]
	... 6 common frames omitted
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(767)
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270) ~[postgresql-9.4-1201-jdbc41.jar:9.4]
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998) ~[postgresql-9.4-1201-jdbc41.jar:9.4]
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) ~[postgresql-9.4-1201-jdbc41.jar:9.4]
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570) ~[postgresql-9.4-1201-jdbc41.jar:9.4]
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420) ~[postgresql-9.4-1201-jdbc41.jar:9.4]
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:366) ~[postgresql-9.4-1201-jdbc41.jar:9.4]
	at com.jolbox.bonecp.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:203) ~[bonecp-0.7.1.RELEASE.jar:0.7.1.RELEASE]
	at net.java.ao.db.PostgreSQLDatabaseProvider.executeInsertReturningKey(PostgreSQLDatabaseProvider.java:356) ~[na:na]
	at net.java.ao.DatabaseProvider.insertReturningKey(DatabaseProvider.java:1970) ~[na:na]
	at net.java.ao.db.PostgreSQLDatabaseProvider.insertReturningKey(PostgreSQLDatabaseProvider.java:313) ~[na:na]
	at net.java.ao.EntityManager.create(EntityManager.java:398) ~[na:na]
	at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.create(EntityManagedActiveObjects.java:109) ~[na:na]
	... 12 common frames omitted

SSH Keys established as part of AppLinks will be immediately revoked

The Bamboo AppLinks integration with Stash uses the trust to dynamically create a key pair under the user who setup the trust.

If our plugin is running at the time it will immediately revoke the key pair forcing the integration at repo level to fail.

This is not just a 1-time operation, but also occurs anytime bamboo finds the key is no longer valid/present in stash. Seems the best solution would be to check the user who is calling the creation and allow it from the right service users. ( a hack would be to disable this plugin when the trust is established, and not purge that key)

Another big caveat is that Atlassian is going to be re-wroking the entire master SSH key scheme to move it away from the initial trusted users's to individual project/repository level keys (which this plugin also blocks for the time being)

Key Expiration Policy Not Being Enforced

Tested with Bitbucket v4.13.1

Keys are not being expired based on expiration policy settings.

KeyRotationScheduler component's LifecycleAware onStart() not being called. Need to make component public in atlassian-plugin.xml.

Refactor use of UserService.preAuthenticate

Currently use preAuthenticate to allow the call to sshKeyService to succeed when it calls authenticationContext.getCurrentUser(). But this creates admin access for the life of the thread, where as SecurityService provides more control.

Since this is called via a scheduled job, it may be OK,but the use of either should be move to the job runner, and not the service layer (which can also be used by a service call to APIs)

Enhance Logging/Audit for key creation and purging.

Audit Events

Expose details logged below as internal Audit Event as well.

Meta to expose in API

  • Created Date

Info to log on creation

Info to log on purge

  • Username (currently shows user ID, internal long)
  • Key Type
  • Created Date

Allow admins to purge USER keys on-demand

Expose API to purge key for specific user, or a specific key even though it may not be expired based on time limits. (was compromised, etc)

This should remove the keys and trigger an email to the user to follow up.

Track meta for keys generated by Bamboo

Currently the plugn allows these keys to be created if initiated by a user in the configured group. But the keys are not tracked and therefore never rotated.

AC:

  • Keys created by special authorized group are tracked as "bamboo" keys
  • Existing expiration job runs specific to keys type "USER", leaving this keys aside for #8

Unable to link new Stash repository with Bamboo 5.11.3

While trying to add a new repository within Stash I'm continually running into a Could not check if existing access key is valid: null error message. As a test I disabled this plugin and tried to re-add the same repository. Afterwards I saw that it successfully connected the repository and added the SSH keys to the repository itself and not the logged in user's profile.

Based on the error logs from Stash I'm running into the following error message:

2016-05-31 09:31:16,257 DEBUG [http-nio-8443-exec-15] ******** @********** *.*.*.*,*.* "POST /rest/keys/1.0/projects/TEST/repos/build-farm-java-test-project/ssh HTTP/1.1" c.a.s.r.e.ServiceExceptionMapper Mapping ServiceException to REST response 400
com.atlassian.stash.user.PermissionGrantCanceledException: Permission grant canceled
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService$19.visitPermissionGranted(DefaultPermissionAdminService.java:1482) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService$19.visitPermissionGranted(DefaultPermissionAdminService.java:1479) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService.visitPermissionAction(DefaultPermissionAdminService.java:1530) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService.maybeCancelRequest(DefaultPermissionAdminService.java:1479) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService.fireRepositoryPermissionRequestedEvent(DefaultPermissionAdminService.java:1438) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService.doSetPermission(DefaultPermissionAdminService.java:678) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.user.DefaultPermissionAdminService.setPermission(DefaultPermissionAdminService.java:628) ~[stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.key.ssh.DefaultSshKeyAccessService$13.doInTransaction(DefaultSshKeyAccessService.java:471) ~[stash-ssh-3.11.3.jar:na]
    at com.atlassian.stash.internal.key.ssh.DefaultSshKeyAccessService$13.doInTransaction(DefaultSshKeyAccessService.java:427) ~[stash-ssh-3.11.3.jar:na]
    at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:25) ~[sal-core-2.13.4.jar:na]
    at com.atlassian.stash.internal.sal.spi.HostContextAccessorImpl.doInTransaction(HostContextAccessorImpl.java:27) ~[stash-platform-3.11.3.jar:na]
    at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:21) ~[sal-core-2.13.4.jar:na]
    at com.atlassian.activeobjects.internal.SalTransactionManager.inTransaction(SalTransactionManager.java:48) ~[na:na]
    at com.atlassian.activeobjects.internal.AbstractLoggingTransactionManager.doInTransaction(AbstractLoggingTransactionManager.java:19) ~[na:na]
    at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.executeInTransaction(EntityManagedActiveObjects.java:276) ~[na:na]
    at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects.executeInTransaction(TenantAwareActiveObjects.java:383) ~[na:na]
    at com.atlassian.stash.internal.key.ssh.DefaultSshKeyAccessService.setAccess(DefaultSshKeyAccessService.java:427) ~[stash-ssh-3.11.3.jar:na]
    at com.atlassian.stash.internal.key.ssh.rest.SshKeyAccessResource.addForRepository(SshKeyAccessResource.java:195) ~[stash-ssh-3.11.3.jar:na]
    at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) [applinks-plugin-4.3.7_1442553798000.jar:na]
    at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:88) [StashAuthenticationFilter.class:na]
    at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:109) [BeforeLoginPluginAuthenticationFilter.class:na]
    at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75) [BeforeLoginPluginAuthenticationFilter.class:na]
    at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:103) [atlassian-trusted-apps-core-4.0.0.jar:na]
    at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:79) [atlassian-oauth-service-provider-plugin-1.9.10_1442553798000.jar:na]
    at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:36) [analytics-client-3.70.1_1442553800000.jar:na]
    at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) [analytics-client-3.70.1_1442553800000.jar:na]
    at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:87) [BeforeLoginPluginAuthenticationFilter.class:na]
    at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:73) [BeforeLoginPluginAuthenticationFilter.class:na]
    at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:85) [stash-service-impl-3.11.3.jar:na]
    at com.atlassian.stash.internal.hazelcast.ConfigurableWebFilter.doFilter(ConfigurableWebFilter.java:38) [ConfigurableWebFilter.class:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_60]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60]
    ... 334 frames trimmed

The error message is being captured in Bamboo though the StashRepository.java file located at atlassian-bamboo/components/bamboo-plugins2/bamboo-plugin-stash/src/main/java/com/atlassian/bamboo/plugins/stash/StashRepository.java line 493

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.