0
残りのAPIをテストするためにSpring Bootテストを作成しようとしています。その結果、プリンシパルをリクエストから取得し、それを使用してユーザーを識別できます。 {:1502014507361、 "ステータス" 403、 "エラー": "禁止"、 "メッセージ": "アクセス 拒否されました"、 "パス": "/ hello" を "タイムスタンプ"}Spring TestRestTemplate認証
サーバはを返します
私はここで何が欠けていますか?
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class RestTemplateTest {
@Autowired
TestRestTemplate testRestTemplate;
@Test
public void testit() {
testRestTemplate.withBasicAuth("user", "password");
String responsePayload = testRestTemplate.getForObject("/hello", String.class);
}
@RestController
public class GreetingController {
@RequestMapping("/hello")
public String heipat(Principal principal) {
String string = "hello there";
return string;
}
@Configuration
@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests().anyRequest().hasRole("USER");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
助けになりません。まだ何かが足りない? – catch22
あなたがログインするまでAPI '/ hello'にアクセスすることはできません。あなたはまずあなた自身を認証してからリクエストを送信する必要があります。 APIを '.antMatchers("/hello ")を使って公開することができます。 –