Giter Club home page Giter Club logo

scitokens-credmon's Introduction

HTCondor

HTCondor is a Distributed High Throughput Computing system developed at the Center for High Throughput Computing at the University of Wisconsin - Madison. With it, users can divide large computing workloads into jobs and submit them to an HTCondor scheduler, which will run them on worker nodes managed by HTCondor.

Prebuilt binaries for Linux, Windows and Mac can be downloaded.

Documentation

The HTCondor manual is a comprehensive reference for users and administrators of HTCondor.

Community

The CHTC maintains active email lists where the HTCondor community asks and answers questions about the installation, use, or tuning of HTCondor. If you have a question, encounter a surprise about HTCondor, or a potential bug, these public email lists are the first place to go.

We welcome github pull requests for code fixes or documentation improvements, but if you have ideas for a big feature change, please talk with us first.

HTCondor Week is our annual community meeting in Madison, WI, and we often have an annual meeting in Europe as well. We encourage everyone with an interest in HTCondor to join us.

Materials from past meetings include talks from science and industry, plus useful tutorials.

HTCondor Wiki contains FAQs, bug tickets, and more.

LICENSE

The HTCondor source code is licensed under the Apache-2.0 Open Source License. See the NOTICE.txt file for full details.

scitokens-credmon's People

Contributors

bbockelm avatar djw8605 avatar drdaved avatar duncan-brown avatar jasoncpatton avatar matyasselmeci avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scitokens-credmon's Issues

Problem when returning from OAuth provider when using custom-named providers

For example, say a user wants multiple Box tokens, and so requests tokens named box_1 and box_2. When the OAuthCredmonWebserver sends the user out to Box's authorize endpoint, they will get sent back to something like "/return/box", not "/return/box_1". Thus, methods that lookup the provider info in the key file or session object will fail because they will be looking for a provider named "box", per the return decorator's argument /return/<provider>. We should tag the session variable with the outgoing custom token name so that it can be looked up upon return from the OAuth authorize endpoint.

Make deploy script configurable/universal

In the deploy script, an admin should be able to specify which web server they want to use, where the credential directory should be, and what subdirectory (if any) the webserver should host the Flask app under. Thinking some of this should be done interactively (with an option to skip and use defaults) rather than having a ton of command line options.

Also, the Apache part as is probably only works in RHEL-dervied distros, where we assume Apache configs are in /etc/httpd. How can we make this more universal?

Key file cleanup

Key files should be cleaned up after users have logged in to all of their OAuth providers rather than waiting for the condor_credd to do it.

Abandon install script, install commented configs and provide examples

Per experience with getting this working in CHTC, the install script is seeming less and less ideal. For distro packages, let's put commented-out configs in /etc/condor/config.d (or whatever makes sense for the distro) and the WSGI app in /var/www/wsgi-scripts/scitokens-credmon. For both wheel and distro packages, let's provide an examples directory for all configs, where wheel installers can grab all configs from this directory and distro installers can grab web server configs from this directory.

Add self-signed credmon

Currently only the OAuth Credmon implementation is included, we should also add the Self-Signed Certs Credmon (code already exists).

Check aliveness of credmon threads

The credmon continues to lock up. Derek noticed that the condor cgroup may be running up against file open limits. Maybe this is causing one of the credmon threads to silently die?

Proper logging of flask app

Currently, the Flask app logs to the same files as the credmon by default. The logging should really end up in the httpd's logs. Flask provides a handler for this.

Interoperability between OAuth Credmon and Local Issuer Credmon

The credmons both operate out of the same directory on files with the same extensions (.use and .top). This means, if the local issuer is configured, both credmons are poking through all of the credentials. The credmons should differentiate which tokens they work on. It seems like the best option right now is to use the presence of .meta files to discern which tokens are OAuth and which are local.

webserver should write temp tokens, credmon should move and own tokens

The webserver should never run as root, but we should secure user's tokens by owning them as root (or HTCondor's real uid). The credmon should be forked by the credd, so it will be running as the correct uid. Current idea: The webserver writes tokens to a temp directory and then pings the credmon (how?) to move and own the tokens into the SEC_CREDENTIAL_DIRECTORY.

Proper system packaging of credmon

We should really include proper packaging of the credmon itself in order to make this straightforward to install "alongside" a schedd.

Thoughts that come to mind:

  • RPM packages (see #14)
  • Drop condor config files necessary to enable the credmon. Only enable if admin specifies it in the config file
  • WSGI configuration necessary for integration in apache.
  • Generate new signing keys on first start of the credmon.
  • Export .well-known directory for OAuth2 auto-discovery.
  • Change Flask app to not function unless condor config changed by sysadmin.
  • Split configuration files to "must be edited" and "infrequently edited".

The end goal is that yum install scitokens-credmon - with very minimal config changes - should result in a working local issuer.

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.