如何获取所有Auth0用户的列表

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禁止状态。

arc*_*don 5

是的,这是可能的。但是,您将需要使用Auth0 Management Token

请参阅我编写的此示例,在其中进行搜索(在这种情况下,进行筛选以获取特定的用户帐户而不是所有用户)。

您可以获取管理令牌并在此处查看搜索选项。您需要根据文档提供管理令牌read:usersread: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)