Tôi đang cố triển khai dịch vụ REST dựa trên khởi động mùa xuân, sử dụng Azure AD làm máy chủ OAuth2 để xác thực ứng dụng khách.Sử dụng Azure Active Directory làm dịch vụ xác thực OAUTH2 cho dịch vụ REST khởi động Spring
Tôi đã đăng ký hai applicatons:
- thoại di động ứng dụng có nguồn gốc được sử dụng như một khách hàng cho dịch vụ của tôi
- Rest-dịch vụ như một hậu phương.
Tất cả yêu cầu cho ứng dụng phụ trợ phải được xác thực thông qua Azure AD bằng cách sử dụng luồng OAuth2.
Là một thực hiện của ứng dụng di động Tôi đang sử dụng curl:
Đối với việc thu thập một mã thông báo Bearer tôi sử dụng https://login.microsoftonline.com/TENANT_ID/oauth2/token
curl -s -X POST https://login.microsoftonline.com/<TENANT_ID>/oauth2/token -d grant_type=password -d username=$USER_NAME -d password=$PASSWORD -d resource=$RESOURCE_ID -d client_id=$CLIENT_ID
nơi $ USER_NAME và $ PASSWORD là credetials của một Azure dùng AD, $ RESOURCE_ID là một SID của dịch vụ REST của tôi và $ CLIENT_ID là một SID của ứng dụng di động của tôi cho REST serice.
Azure trả về thành công JSON với dữ liệu mã thông báo.
My OAuth2 Config cho Backend ứng dụng:
@Configuration
@EnableResourceServer
public class OAuth2Config extends ResourceServerConfigurerAdapter {
@Bean
ResourceServerTokenServices resourceTokenServices() {
RemoteTokenServices tokenServices = new RemoteTokenServices();
tokenServices.setClientId(resourceId);
tokenServices.setClientSecret(/*I do not have it*/resourcePassword);
tokenServices.setCheckTokenEndpointUrl(/*I do not have it*/checkToken);
return tokenServices;
}
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.tokenServices(resourceTokenServices());
resources.resourceId("rest_api");
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").authenticated();
}
}
khiển REST của tôi:
@RestController
@RequestMapping("/data")
public class CustomerRestController {
@RequestMapping(method = RequestMethod.GET)
public SomeData getMyData(Principal principal){
System.out.println("RESOURCE WAS REQUESTED BY " + principal.getName());
return new SomeData(principal.getName());
}
}
Nhưng tôi không tìm thấy trong danh sách thiết bị đầu cuối bất kỳ URL có thể được sử dụng bởi các dịch vụ REST của tôi cho kiểm tra mã thông báo mang và lấy dữ liệu người dùng từ Azure AD. Ngoài ra, như tôi hiểu, cần có một số thông tin xác thực cho dịch vụ REST của tôi để sử dụng Azure AD
Làm cách nào để tìm các giá trị bắt buộc hoặc tôi đang đi sai?
Mã Java đó có trong mẫu của bạn không? –
@ShaunLuttin có, đó là mã Java – Serg
Tài liệu này có thể giúp bạn https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/ –