mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[Markdown] Fix auth error in Google service: Code Challenge must be created with URL encoder
GitOrigin-RevId: f624ed6dcca661d2e83bd3da3b13eb2b57540d53
This commit is contained in:
committed by
intellij-monorepo-bot
parent
924c9cbcd8
commit
f5049ace56
@@ -7,15 +7,9 @@ import java.util.*
|
||||
object PkceUtils {
|
||||
fun generateCodeVerifier(): String = DigestUtil.randomToken()
|
||||
|
||||
fun generateShaCodeChallenge(codeVerifier: String, withoutPadding: Boolean): String {
|
||||
fun generateShaCodeChallenge(codeVerifier: String, encoder: Base64.Encoder): String {
|
||||
val sha = DigestUtil.sha256().digest(codeVerifier.toByteArray())
|
||||
val encoder =
|
||||
if (withoutPadding) {
|
||||
Base64.getEncoder().withoutPadding()
|
||||
}
|
||||
else {
|
||||
Base64.getEncoder()
|
||||
}
|
||||
|
||||
return encoder.encodeToString(sha)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.util.Url
|
||||
import com.intellij.util.Urls.newFromEncoded
|
||||
import org.jetbrains.ide.BuiltInServerManager
|
||||
import org.jetbrains.ide.RestService
|
||||
import java.util.*
|
||||
import java.util.concurrent.CompletableFuture
|
||||
|
||||
@Service
|
||||
@@ -31,7 +32,7 @@ internal class GHOAuthService : OAuthServiceBase<Credentials>() {
|
||||
|
||||
private val codeVerifier = PkceUtils.generateCodeVerifier()
|
||||
|
||||
private val codeChallenge = PkceUtils.generateShaCodeChallenge(codeVerifier, false)
|
||||
private val codeChallenge = PkceUtils.generateShaCodeChallenge(codeVerifier, Base64.getEncoder())
|
||||
|
||||
override val authorizationCodeUrl: Url
|
||||
get() = newFromEncoded("http://127.0.0.1:$port/${RestService.PREFIX}/$SERVICE_NAME/authorization_code")
|
||||
|
||||
@@ -11,13 +11,14 @@ import com.intellij.util.io.DigestUtil
|
||||
import org.intellij.plugins.markdown.google.utils.GoogleCredentialUtils
|
||||
import org.jetbrains.ide.BuiltInServerManager
|
||||
import org.jetbrains.ide.RestService
|
||||
import java.util.*
|
||||
|
||||
internal class GoogleOAuthRequest(googleAppCred: GoogleCredentialUtils.GoogleAppCredentials) : OAuthRequest<GoogleCredentials> {
|
||||
private val port: Int get() = BuiltInServerManager.getInstance().port
|
||||
|
||||
private val encoder = Base64.getUrlEncoder().withoutPadding()
|
||||
private val codeVerifier = PkceUtils.generateCodeVerifier()
|
||||
|
||||
private val codeChallenge = PkceUtils.generateShaCodeChallenge(codeVerifier, true)
|
||||
private val codeChallenge = PkceUtils.generateShaCodeChallenge(codeVerifier, encoder)
|
||||
|
||||
override val authorizationCodeUrl: Url
|
||||
get() = Urls.newFromEncoded("http://localhost:${port}/${RestService.PREFIX}/${service<GoogleOAuthService>().name}/authorization_code")
|
||||
|
||||
Reference in New Issue
Block a user