Mae'r porwr yn cyrraedd y darparwr hunaniaeth, ac yna mae mewngofnodi'n methu pan fydd y cymhwysiad yn cyfnewid y cod awdurdodi a ddychwelwyd. Cais allanol o weinydd y cymhwysiad yw'r cyfnewid hwnnw, gyda'i gleient HTTP ei hun.

Ar gyfer yr API sy'n seiliedig ar RestClient sydd ar gael yn Spring Security 6.5, rhowch ffatri ceisiadau sy'n ymwybodol o brocsi i gleient ymateb tocyn y cod awdurdodi:

SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
factory.setConnectTimeout(5000);
factory.setReadTimeout(15000);

RestClient tokenHttp = RestClient.builder()
    .requestFactory(factory)
    .messageConverters(converters -> {
        converters.clear();
        converters.add(new FormHttpMessageConverter());
        converters.add(new OAuth2AccessTokenResponseHttpMessageConverter());
    })
    .defaultStatusHandler(new OAuth2ErrorResponseErrorHandler())
    .build();

RestClientAuthorizationCodeTokenResponseClient tokenClient =
    new RestClientAuthorizationCodeTokenResponseClient();
tokenClient.setRestClient(tokenHttp);

Mae'r dosbarthiadau trawsnewidydd a thriniwr gwallau yn cadw ymddygiad dogfennol cais tocyn Spring Security. Nid yw RestClient cyffredinol wedi'i ffurfweddu ar gyfer API JSON digyswllt yn unig yn ddisodliad cyfatebol.

Cysylltwch yr un tokenClient â'r ffurfweddiad diogelwch presennol:

http.oauth2Login(login -> login
    .tokenEndpoint(token -> token
        .accessTokenResponseClient(tokenClient)));

Darnau ffurfweddu yw'r rhain ar gyfer cymhwysiad sydd eisoes â'i gofrestriad cleient a SecurityFilterChain. Maent yn dewis procsi HTTP heb ddilysu; mae procsi sy'n gofyn am gymwysterau angen ffurfweddiad dilysu cyfatebol y cludiant a ddewiswyd. Ar gyfer pwynt terfyn tocyn HTTPS y gellir ei gyrraedd yn gyhoeddus ar lwybr cyhoeddus a ganiateir, gall cofnod HTTP o'r rhestr procsi HTTP lenwi'r cyfeiriad procsi hwnnw heb gyfrif.

Cadwch westeiwr y procsi ar wahân i'w borth a'i gynllun URL. Gadewch URI tocyn y darparwr hunaniaeth fel y gyrchfan. Nid yw'r enghraifft yn disodli dilysu tystysgrifau.

Mae angen gwiriad perchnogaeth eu hunain ar geisiadau diweddarach. Gall adalw UserInfo, cyfnewidiadau tocyn adnewyddu, grantiau client-credentials a galwadau API gwarchodedig ddefnyddio gwrthrychau cleient eraill. Ffurfweddwch y cleient cefnogol cyfatebol pan fydd y gweithrediad hwnnw hefyd angen y llwybr. Ar gyfer llif client_credentials adweithiol Spring Security 6.5, ffurfweddwch y cleient tocyn adweithiol a'i ddarparwr grant ar wahân.

Mae enghreifftiau hŷn sy'n defnyddio OAuth2RestTemplate ac AccessTokenProvider yn perthyn i brosiect Spring Security OAuth hŷn. Dewiswch yr API a ddefnyddir gan y cymhwysiad sydd wedi'i osod cyn addasu cod; peidiwch â chymysgu'r gwrthrychau hynny i'r ffurfweddiad hwn.

Erthyglau cysylltiedig