in azure-active-directory-server/src/main/kotlin/org/jetbrains/teamcity/aad/LoginViaAADController.kt [30:57]
override fun doHandle(request: HttpServletRequest, response: HttpServletResponse): ModelAndView? {
val nonce = accessTokenFactory.create()
val endpoint = aadSchemeProperties.appOAuthEndpoint
val clientId = aadSchemeProperties.clientId
if (endpoint == null || clientId == null) return null
val separator = if (endpoint.contains('?')) '&' else '?'
val requestUrl = StringBuilder("$endpoint$separator")
.append("response_type=id_token")
.append("&client_id=$clientId")
.append("&scope=openid profile")
.append("&nonce=$nonce")
.append("&response_mode=form_post")
.apply {
aadSchemeProperties.authPrompt?.let {
if (it.isNotEmpty()) {
this.append("&prompt=${it.trim()}")
}
}
UriComponentsBuilder.fromUriString(rootUrlHolder.rootUrl)
.path(callbackPathProvider.path)
.toUriString().let {
this.append("&redirect_uri=$it")
}
}
return ModelAndView(RedirectView(requestUrl.toString()))
}