Как ты аутентификация в Cisco контакт-центр экспресс-обслуживания идентичность?
Я создаю стороннее приложение для аутентификации в Contact Center Express. Документация необходима, но недостаточна для этого. Например,
// Get Access Token for the received Authorization Code
String redirectURI = config.getRedirectUri();
AccessToken token = client.getAccessToken(authCode, redirectURI);
Когда и где вы перенаправляете пользователя в контакт-центр для аутентификации? Я заметил, что изящество перенаправит пользователя на
Но где указано использовать путь службы идентификации (IDS) /ids/v1/oauth/authorize? И является ли состояние обязательным параметром? И делает ли IDS SDK обрабатывает путь обратного вызова /desktop/sso/authcode? Я предполагаю, что это не так, но каковы параметры, которые будут ему отправлены? Я использую Spring framework.
Должен ли я реинжинирировать весь процесс, или у меня нет дополнительной документации?
Даже после того, как я получу маркер OAuth, как я буду использовать его для выполнения других вызовов REST к другим продуктам Cisco? Тонкости API-интерфейсы REST только упомянуть базовой HTTP-аутентификации. Там нет упоминания заголовков для " Authorization: Bearer" жетоны.
Https://developer.cisco.com/docs/finesse/#!вход в систему-к-утонченность/знак-в-в-утонченность
1 ответ:
Мне пришлось перепроектировать его после всех перенаправлений.
@Controller public class SSOController { @Autowired private IdSClientConfigurationImpl config; @Autowired private IdSClient client; @PostMapping("/login") public String login(@RequestParam(name="user", required=true) String user) { // redirect the user to the Cisco Contact Center Express Identity Service String redirectURI = config.getRedirectUri(); String clientId = config.getClientId(); URI uri = UriComponentsBuilder .fromUriString("https://contact-center-express:8553/ids/v1/oauth/authorize") .queryParam("redirect_uri", "{redirect_uri}") .queryParam("client_id", "{client_id}") // .queryParam("state", "{state}") // base64 encoded .queryParam("response_type", "code") .build(redirectURI, clientId); return "redirect:"+uri.toString(); } @GetMapping("/idscallback") public String idscallback( @RequestParam(name="code", required=true) String code, @RequestParam(name="state", required=false) String state, HttpSession session) throws IdSClientException { // Get Access Token for the received Authorization Code String redirectURI = config.getRedirectUri(); AccessToken token = client.getAccessToken(code, redirectURI); // why do I need redirectURI when it's already redirected? String accessTokenString = token.getAccess_token(); session.setAttribute("token", accessTokenString); // model.addAttribute("token", accessTokenString); return "redirect:/"; }И в бобе далеко-далеко отсюда...
@Bean public IdSClientConfigurationImpl config() throws IOException, IdSClientException { ClassPathResource idsclientResource = new ClassPathResource("idsclient.properties"); IdSClientConfigurationImpl config = new IdSClientConfigurationImpl(idsclientResource.getFile().getPath()); // IdSClientConfigurationImpl config = new IdSClientConfigurationImpl("src/main/resources/idsclient.properties"); config.load(); return config; } @Bean public IdSClient setupIdsClient() throws IOException, IdSClientException { IdSClient client = IdSClientFactory.getIdSClient(); client.setTLSContext(createSSLTrustManager(), createHostnameVerifier()); // client.setTLSContext(arg0, arg1) // use secure trust manager and hostname verifier in production client.init(config); return client; } private X509TrustManager createSSLTrustManager() { X509TrustManager tm = new TrustAllX509TrustManager(); return tm; } private HostnameVerifier createHostnameVerifier() { HostnameVerifier hv = new SkipAllHostNameVerifier(); return hv; }
Comments