Ser*_*nik 4 java spring-security auth0
我想从Java API(auth0客户端)获取Auth0用户列表。我可以做吗?基于Java + Spring Security的API。我试图用RestTemplate做到这一点:
List findAllUsers(){
String idToken = RestService.getIdToken()
HttpHeaders headers = new HttpHeaders()
headers.set("Authorization", "Bearer $idToken");
List users = []
try{
ResponseEntity entity = restTemplate.exchange(issuer+"api/v2/users", HttpMethod.GET, new HttpEntity<Object>(headers), List)
users = entity.getBody()
} catch (HttpClientErrorException e){
e.printStackTrace()
}
return users
}
Run Code Online (Sandbox Code Playgroud)
但是我正在获得403禁止状态。
是的,这是可能的。但是,您将需要使用Auth0 Management Token
。
请参阅我编写的此示例,在其中进行搜索(在这种情况下,进行筛选以获取特定的用户帐户而不是所有用户)。
您可以获取管理令牌并在此处查看搜索选项。您需要根据文档提供管理令牌read:users
和read:user_idp_tokens
范围。
建议您先使用Postman之类的工具进行正确的搜索,然后再转换为Java。您可以使用上面的示例链接中列出的代码段和相关的依赖项OkHttpClient
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
同样,Postman也可以用于generate
您定义的请求中的代码。Auth0当前不提供Java库管理API,但很快就会提供。
更新:
这是一些工作代码,只需替换为您的管理令牌和租户(用于URL)。
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.io.IOException;
/**
* Created by arcseldon on 07/09/2016.
*/
public class GetUsers {
public static void main(String[] args) throws IOException {
final String MANAGEMENT_TOKEN = "YOUR_MANAGEMENT_TOKEN";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://<YOUR_TENANT>.auth0.com/api/v2/users")
.get()
.addHeader("authorization", "Bearer " + MANAGEMENT_TOKEN)
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
System.out.println("All done: " + response.body().string());
}
}
Run Code Online (Sandbox Code Playgroud)