Есть ли конечная точка для проверки токена в ADFS? - PullRequest
0 голосов
/ 09 января 2020

Я использую Spring Oauth2 и ADFS в целях безопасности. Однако я не могу найти конечную точку для проверки токена из ответа ADFS.

У меня также есть поставщик авторизации Spring, который написан на Java. И мое приложение вызвало его с помощью этих свойств:

security.oauth2.client.clientId=myclient
security.oauth2.client.client-secret= mysecret
security.oauth2.client.userAuthorizationUri= http://127.0.0.1:9999/oauth/authorize?resource=https://localhost:8443/login
security.oauth2.client.accessTokenUri= http://127.0.0.1:9999/oauth/token
security.oauth2.resource.user-info-uri= http://127.0.0.1:9999/login
security.oauth2.resource.token-info-uri= http://127.0.0.1:9999/oauth/check_token
security.oauth2.client.tokenName=code
security.oauth2.client.authenticationScheme=query
security.oauth2.client.clientAuthenticationScheme=form
security.oauth2.client.grant-type=authorization_code

И я изменил значения свойств для соединения с ADFS

security.oauth2.client.clientId=myclient
security.oauth2.client.client-secret= myclient
security.oauth2.client.userAuthorizationUri= https://adfs.local/adfs/oauth2/authorize?resource=https://localhost:8443/login
security.oauth2.client.accessTokenUri= https://adfs.local/adfs/oauth2/token
security.oauth2.resource.user-info-uri= https://adfs.local/adfs/oauth2/userinfo
security.oauth2.resource.token-info-uri= https://adfs.local/adfs/oauth2/check_token
security.oauth2.client.tokenName=code
security.oauth2.client.authenticationScheme=query
security.oauth2.client.clientAuthenticationScheme=form
security.oauth2.client.grant-type=authorization_code

Однако я обнаружил, что https://adfs.local/adfs/oauth2/check_token неверно в ADFS.

Как я могу получить check_token в ADFS? check_token является конечной точкой самоанализа Token, однако эта конечная точка не возвращает узел «активный» в соответствии с расширением OAuth 2, которое является обязательным. См. Эту ссылку Именно так поступает поставщик авторизации Spring при возврате конечной точки check_token

@RequestMapping(value = "/oauth/check_token", method = RequestMethod.POST)
@ResponseBody
public Map<String, ?> checkToken(@RequestParam("token") String value) {

    OAuth2AccessToken token = resourceServerTokenServices.readAccessToken(value);
    if (token == null) {
        throw new InvalidTokenException("Token was not recognised");
    }

    if (token.isExpired()) {
        throw new InvalidTokenException("Token has expired");
    }

    OAuth2Authentication authentication = resourceServerTokenServices.loadAuthentication(token.getValue());

    Map<String, Object> response = (Map<String, Object>)accessTokenConverter.convertAccessToken(token, authentication);

    // gh-1070
    response.put("active", true);   // Always true if token exists and not expired

    return response;
}

1 Ответ

2 голосов
/ 09 января 2020

ADFS не имеет такой конечной точки, и я не верю, что это часть спецификации c?

Вы можете использовать:

https: // [Ваш Имя хоста ADFS] /adfs/.well-known/openid-configuration

, чтобы получить ключи для самостоятельной проверки JWT, что является обычной практикой.

Существует множество ресурсов о том, как проверить JWT например это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...