ບຣາວເຊີໄປຮອດຜູ້ໃຫ້ບໍລິການຕົວຕົນ ແລ້ວການເຂົ້າສູ່ລະບົບລົ້ມເຫຼວເມື່ອແອັບຯແລກປ່ຽນລະຫັດອະນຸຍາດທີ່ສົ່ງກັບມາ. ການແລກປ່ຽນນັ້ນເປັນຄຳຮ້ອງອອກຈາກເຊີບເວີແອັບຯ ເຊິ່ງມີ HTTP client ຂອງຕົນເອງ.

ສຳລັບ API ທີ່ອີງໃສ່ RestClient ທີ່ມີໃນ Spring Security 6.5 ໃຫ້ໂຮງງານຄຳຮ້ອງທີ່ຮູ້ຈັກພຣັອກຊີແກ່ລູກຄ້າຕອບສະໜອງໂທເຄັນຂອງລະຫັດອະນຸຍາດ:

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);

ຄລາສ converter ແລະ error handler ຮັກສາພຶດຕິກຳຄຳຮ້ອງໂທເຄັນທີ່ມີເອກະສານຂອງ Spring Security. RestClient ທົ່ວໄປທີ່ຕັ້ງຄ່າສຳລັບ JSON API ທີ່ບໍ່ກ່ຽວຂ້ອງເທົ່ານັ້ນບໍ່ແມ່ນການທົດແທນທີ່ທຽບເທົ່າ.

ເຊື່ອມຕໍ່ tokenClient ດຽວກັນນັ້ນເຂົ້າກັບການຕັ້ງຄ່າຄວາມປອດໄພທີ່ມີຢູ່:

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

ເຫຼົ່ານີ້ແມ່ນສ່ວນຂອງການຕັ້ງຄ່າສຳລັບແອັບຯທີ່ມີການລົງທະບຽນລູກຄ້າ ແລະ SecurityFilterChain ແລ້ວ. ພວກມັນເລືອກ HTTP proxy ທີ່ບໍ່ມີການກວດສອບ; proxy ທີ່ຕ້ອງການຂໍ້ມູນປະກອບຕ້ອງມີການຕັ້ງຄ່າກວດສອບທີ່ເຂົ້າກັນຂອງການຂົນສົ່ງທີ່ເລືອກ. ສຳລັບຈຸດປາຍທາງໂທເຄັນ HTTPS ທີ່ເຂົ້າເຖິງໄດ້ສາທາລະນະເທິງເສັ້ນທາງສາທາລະນະທີ່ອະນຸຍາດ, ລາຍການ HTTP ຈາກລາຍຊື່ HTTP proxyສາມາດຕື່ມທີ່ຢູ່ proxy ທີ່ບໍ່ມີບັນຊີນັ້ນໄດ້.

ແຍກໂຮສຂອງ proxy ອອກຈາກພອດ ແລະ ແຜນ URL ຂອງມັນ. ປ່ອຍ URI ໂທເຄັນຂອງຜູ້ໃຫ້ບໍລິການຕົວຕົນໄວ້ເປັນປາຍທາງ. ຕົວຢ່າງນີ້ບໍ່ໄດ້ທົດແທນການກວດສອບໃບຢັ້ງຢືນ.

ຄຳຮ້ອງຕໍ່ມາຕ້ອງມີການກວດສອບຄວາມເປັນເຈົ້າຂອງຂອງຕົນເອງ. ການດຶງ UserInfo, ການແລກປ່ຽນໂທເຄັນຣີເຟຣຊ, ການໃຫ້ client-credentials ແລະ ການເອີ້ນ API ທີ່ຖືກປ້ອງກັນສາມາດໃຊ້ວັດຖຸລູກຄ້າອື່ນໄດ້. ຕັ້ງຄ່າລູກຄ້າທີ່ຮອງຮັບທີ່ເໝາະສົມເມື່ອການດຳເນີນການນັ້ນຕ້ອງການເສັ້ນທາງນຳ. ສຳລັບການໄຫຼ client_credentials ແບບປະຕິກິລິຍາຂອງ Spring Security 6.5 ໃຫ້ຕັ້ງຄ່າລູກຄ້າໂທເຄັນແບບປະຕິກິລິຍາ ແລະ ຜູ້ໃຫ້ການອະນຸຍາດຂອງມັນແຍກຕ່າງຫາກ.

ຕົວຢ່າງເກົ່າທີ່ໃຊ້ OAuth2RestTemplate ແລະ AccessTokenProvider ເປັນຂອງໂຄງການ Spring Security OAuth ເກົ່າ. ເລືອກ API ທີ່ແອັບຯທີ່ຕິດຕັ້ງໃຊ້ ກ່ອນປັບແຕ່ງໂຄ້ດ; ຢ່າປະສົມວັດຖຸເຫຼົ່ານັ້ນເຂົ້າໃນການຕັ້ງຄ່ານີ້.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ