GitHub OAuth 구현하기 (3)

2020/07/04 - GitHub OAuth 구현하기 (1) 2020/07/07 - GitHub OAuth 구현하기 (2) 에서 이어집니다. GitHub OAuth 구현을 실제 소스코드를 통해서 설명하려고 합니다. ( 사용한 언어는 Golang 이지만, 다른 언어를 사용하더라도 비슷한 방식으로 구현할 수 있습니다. ) 먼저 init() 함수에서 OAuth관련 설정을 해 줍니다. 여기서 만든 설정은 전체 앱에서 사용합니다. var OAuthConf *oauth2.Config func init() { OAuthConf = &oauth2.Config{ ClientID: "{{ oauth app client id }}", ClientSecret: "{{ oauth app client secret }}", Re..

GitHub OAuth 구현하기 (2)

2020/07/04 - GitHub OAuth 구현하기 (1) 에서 이어집니다. GitHub OAuth의 인증을 진행하기 위해, 3가지 파일을 만들었습니다. main.go : 앱의 라우팅 및 OAuth 인증을 진행하기 위한 코드 login.html : "GitHub으로 로그인하기" 버튼을 보여주며, 인증 되지 않은 사용자가 처음 접하는 화면입니다. main.html : GitHub으로부터 인증 받은 이후 처음 보여질 화면입니다. main.go에서 정의한 라우팅은 http.HandleFunc("/", MainHandler) http.HandleFunc("/auth", AuthHandler) http.HandleFunc("/auth/callback", CallbackHandler) log.Fatal(http..

GitHub OAuth 구현하기 (1)

앞으로 몇개 글을 통해서 Go로 OAuth 인증을 구현하는 것을 해보려고 합니다. 오늘 글은 그 첫번째로 OAuth인증 방식과 GitHub에서 OAuth앱을 등록하는 방법을 간략히 설명합니다. 아마도 "Login with Google" 또는 "Sign in with GitHub" 이라는 버튼은 이제 익숙하게 봐왔을 것입니다. 사용자에게는 편리한 기능이지만, 기능을 개발하는 개발자는 개발하기가 좀 까다로운 기능입니다. ( 물론 이미 훌륭하게 구현해 놓은 소스코드들이 있기 때문에 반드시 까다롭다고 말할 수는 없습니다. ) 바로 OAuth 라는 규약의 인증과정을 이해해야 하고, 그 규약에 맞추어 메시지를 주고 받을 수 있어야 하기 때문이기도 하고, 테스트를 하려면, 직접 해당하는 서비스와 연결해야 할 필요가 ..

GitHub에서 Merge된 Branch 자동으로 삭제하기.

요새는 Git을 사용하는 사람도 많아졌고, GitHub에서 개발하는 사람도 많아졌습니다. GitHub에서 개발한다는 이야기는 Pull Request(PR)를 이용해서 workflow를 사용한다는 이야기도 될 수 있을 것 같은데요. Pull Request를 이용하다 보면 관리해줘야 할 것이 있습니다. 바로 Merge된 Branch를 삭제해주는 것입니다. GitHub에서는 Merge될 경우, 브랜치를 쉽게 삭제할 수도록 "Delete Branch" 버튼을 제공합니다. 혼자 관리하는 리파지토리는 잘 눌러서 살아있는(?) 브랜치만 관리합니다. 그런데, 여러명이 협업하는 리파지토리에서는 이 버튼을 잘 눌러지지 않더라구요. 일단 Merge담당자(Reviewer일 수도 있습니다) 입장에서는 함부로 브랜치를 삭제하기 ..

GitHub API 인증방식 중 하나가 삭제될 예정입니다.

오랜만에 GitHub.com의 API를 사용해서 뭘 만들어보고 있는데, "[GitHub API] Deprecation notice for authentication via URL query parameters"라는 제목의 메일을 받았습니다. 내용을 살펴보니, uri 쿼리를 통해서 access_token을 전송하는 방식으로 인증하는 것은 2021년 5월 5일부터는 사용할 수 없고, http header에 담아서 보내야 하도록 변경된다고 합니다. 변경하는 이유는 보안성 강화라고 합니다. 당장 인증이 안되는 것은 아니고, 종료일까지는 정상적으로 인증 할 수 있고, 그 이후에 쿼리를 통해서 access_token을 전달하면 인증 되지 않고 401을 리턴받게 된다고하니, GitHub API를 통해서 뭔가를 하고 ..