package org.jetbrains.teamcity.aad; import jetbrains.buildServer.controllers.AuthorizationInterceptor; import jetbrains.buildServer.controllers.BaseController; import jetbrains.buildServer.web.openapi.WebControllerManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author Evgeniy.Koshkin */ public class LoginViaAADController extends BaseController { @NotNull public static final String LOGIN_PATH = "/aadLogin.html"; @NotNull private final AADSchemeProperties myAADSchemeProperties; public LoginViaAADController(@NotNull final WebControllerManager webManager, @NotNull final AuthorizationInterceptor authInterceptor, @NotNull final AADSchemeProperties aadSchemeProperties) { myAADSchemeProperties = aadSchemeProperties; webManager.registerController(LOGIN_PATH, this); authInterceptor.addPathNotRequiringAuth(LOGIN_PATH); } @Nullable @Override protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception { final String nonce = SessionUtil.getSessionId(request); final String appOAuthEndpoint = myAADSchemeProperties.getAppOAuthEndpoint(); final String clientId = myAADSchemeProperties.getClientId(); if(appOAuthEndpoint == null || clientId == null) return null; final String requestUrl = AADOpenIdConnect.getRequestUrl(appOAuthEndpoint, clientId, nonce); return new ModelAndView(new RedirectView(requestUrl)); } }