Read-Only OAuth Scope on GitHub, Please? #6
Comments
winston
added the
Blog
label
Oct 18, 2015
winston
changed the title from
Read-Only OAUth Scope on GitHub, Please? to Read-Only OAuth Scope on GitHub, Please?
Oct 20, 2015
This was referenced Nov 26, 2015
bluta
commented
Sep 15, 2016
|
i would also love to have this - and am now creating a deploy user having only read access to all of our repos needed by our application. |
ayurkows
commented
Sep 22, 2016
|
This is the first non-doc link from google I found when searching for how to get a read only scope. I agree this is needed, users are going to question why we are asking for write access as well especially since it's highlighted and there's no way for them to know that we are only asking for it because we have no other option. |
alexmalik
commented
Feb 24, 2017
|
I would definitely use this if it was a feature, my app doesn't need the write access that the current |
tpatja
referenced
this issue
in status-im/commiteth
Mar 14, 2017
Closed
Minimize required Github permission set #29
jnieuwhof
commented
Mar 23, 2017
•
|
Plus one on this, breaks principle of least privilege |
winston commentedOct 18, 2015
We love @github. Our processes all revolve around GitHub.
Naturally by extension, we love the GitHub API, because it allows us to do creative things with GitHub.
So far, we have built a few apps that rely heavily on GitHub's API:
Let's talk about permissions next.
For both deppbot and Dasherize, we require access to both public and private repos.
Looking at GitHub's OAuth scopes, we'll need to use the
reposcope.Hmm.. But wait a minute.. The
reposcope grantsreadANDwriteaccess to basically everything! Gettingreadaccess is probably a must for all apps, but do we needwriteon everything?Due to the nature of deppbot, we'll need
writepermission on public and private repos, so that it can issue Pull Requests when it finishes the dependency update for a project and perform other actions.However, all Dasherize does is
readfrom public or private repos, and it's not doing anywriteat all. You can even take a look at the source code to verify that.So isn't it intrusive to require
writepermission too? Definitely.As a user, I would like all apps to only require the lowest level of permission that it needs to operate.
As a developer, I am taking on unnecessary liability when my app has permissions that it doesn't need.
Of course, we are not the first to create apps that use GitHub API, and this has been a common issue for both users and app developers for a while, for example:
By design, GitHub API does not provide any Read-only OAuth scope for public and/or private repos. Once you ask for permissions to either public and/or private repos, you'll get both
readandwrite. What can we do then if we just want Read-only access on GitHub API?There are definitely work arounds, as mentioned in some of the links above:
Progressive Permissioning
This means that the app shall only ask for permissions when it requires it.
Let's use @houndci as an example.
When you first sign up, @houndci only asks for access to your email and public repos
read/write.Then, it provides you with the option to "Include Private Repos".
Clicking on that, you can now grant @houndci access to both public and private repos
read/write.In this way, you only grant @houndci necessary permissions when it requires it.
But this still doesn't solve the problem if my app just requires a
readscope, like Dasherize..Manual Setup
Alternatively, maybe a manual setup of collaborators might help?
Unfortunately not.
When you add a collaborator to a GitHub repo, the collaborator naturally has
readandwritepermissions, and you can't change it.What about Teams (for Organization repos only)? Can it grant Read-only permissions?
Yes. That might help!
You can create a special Team in the organization, grant the Team a😢
read-onlyaccess to the repo,and now you have a Read-only scope. But in most cases, manual setup is not the best UX experience.
Recently, GitHub also added Read-only Deploy Keys, as another option to grant Read-only access to one single repo.
Many are speculating that this eventually lead to a Read-only OAuth scope. I sure hope so.
In summary, we really hope that @github can provide developers with a Read-only OAuth scope, so that app developers don't have to explain ourselves every time we use the
reposcope.In both deppbot and Dasherize, we are conscious of our decision in asking for
readwriteaccess to public and private repos because we went with the simplest solution for now to validate the ideas. Definitely, we should look into both Progressive Permissing or Manual Setup when the apps get enough traction and feedback from users.Thank you for reading.
@winston✏️ Jolly Good Code
About Jolly Good Code
We specialise in Agile practices and Ruby, and we love contributing to open source.
Speak to us about your next big idea, or check out our projects.