如何获取所有 Auth0 用户的列表
How to get list of all Auth0 users
我想从 Java API(auth0 客户端)获取 Auth0 用户列表。我可以做吗? API 基于 Java+Spring 安全性。
我试着用 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
}
但我收到 403 禁止状态。
是的,这是可能的。但是,您需要使用 Auth0 Management Token
。
参见 this sample 我写的,我在哪里进行搜索(在这种情况下过滤以获取特定用户帐户而不是所有用户)。
您可以获得管理令牌并查看搜索选项here。您需要根据文档提供管理令牌 read:users
和 read:user_idp_tokens
范围。
建议您先使用 Postman 等工具进行正确搜索,然后再转换为 Java。您可以使用 OkHttpClient
上面的示例 link 中列出的代码段和关联的依赖项
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.2.0</version>
</dependency>
此外,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());
}
}
您可以使用库 Apache HTTP 客户端:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
并且这段代码工作正常:
HttpClient httpclient = new DefaultHttpClient();
URIBuilder builder = new URIBuilder("https://domain.auth0.com/api/v2/users");
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setHeader("Accept", "application/json");
httpGet.setHeader("Content-type", "application/json");
httpGet.setHeader(
"Authorization",
"Bearer "+ token);
HttpResponse responseHttp = httpclient.execute(httpGet);
HttpEntity entity = responseHttp.getEntity();
BufferedReader rd = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
System.out.println(line);
}
这个代码你只会给你 50 个用户,如果你的用户超过 50 个你必须使用这个 URL :
https://domain.auth0.com/api/v2/users?per_page=50&page="+ pageNumber + "&include_totals=true"
并且您可以指定每页的用户数和包含用户总数的页码。
这段代码的结果是一个JSON,所以最简单的解析方法是使用Gson库:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.7</version>
</dependency>
这是一个使用 Gson 库解析 Json 字符串的示例:
public String parse(String jsonLine) {
JsonElement jelement = new JsonParser().parse(jsonLine);
JsonObject jobject = jelement.getAsJsonObject();
jobject = jobject.getAsJsonObject("data");
JsonArray jarray = jobject.getAsJsonArray("translations");
jobject = jarray.get(0).getAsJsonObject();
String result = jobject.get("translatedText").toString();
return result;
}
rest 模板的简单方法。
final String MANAGEMENT_TOKEN = "ManagementToken";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("Authorization", "Bearer" + " " + MANAGEMENT_TOKEN);
HttpEntity<Object> httpEntity = new HttpEntity<>(httpHeaders);
String url = "https:<//YOUR_DOMAIN>.auth0.com/api/v2/users";
ResponseEntity<Object>response=restTemplate.exchange(url,HttpMethod.GET,httpEntity, Object.class);
`
希望这对您有所帮助
我想从 Java API(auth0 客户端)获取 Auth0 用户列表。我可以做吗? API 基于 Java+Spring 安全性。 我试着用 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
}
但我收到 403 禁止状态。
是的,这是可能的。但是,您需要使用 Auth0 Management Token
。
参见 this sample 我写的,我在哪里进行搜索(在这种情况下过滤以获取特定用户帐户而不是所有用户)。
您可以获得管理令牌并查看搜索选项here。您需要根据文档提供管理令牌 read:users
和 read:user_idp_tokens
范围。
建议您先使用 Postman 等工具进行正确搜索,然后再转换为 Java。您可以使用 OkHttpClient
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.2.0</version>
</dependency>
此外,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());
}
}
您可以使用库 Apache HTTP 客户端:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
并且这段代码工作正常:
HttpClient httpclient = new DefaultHttpClient();
URIBuilder builder = new URIBuilder("https://domain.auth0.com/api/v2/users");
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setHeader("Accept", "application/json");
httpGet.setHeader("Content-type", "application/json");
httpGet.setHeader(
"Authorization",
"Bearer "+ token);
HttpResponse responseHttp = httpclient.execute(httpGet);
HttpEntity entity = responseHttp.getEntity();
BufferedReader rd = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
System.out.println(line);
}
这个代码你只会给你 50 个用户,如果你的用户超过 50 个你必须使用这个 URL :
https://domain.auth0.com/api/v2/users?per_page=50&page="+ pageNumber + "&include_totals=true"
并且您可以指定每页的用户数和包含用户总数的页码。
这段代码的结果是一个JSON,所以最简单的解析方法是使用Gson库:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.7</version>
</dependency>
这是一个使用 Gson 库解析 Json 字符串的示例:
public String parse(String jsonLine) {
JsonElement jelement = new JsonParser().parse(jsonLine);
JsonObject jobject = jelement.getAsJsonObject();
jobject = jobject.getAsJsonObject("data");
JsonArray jarray = jobject.getAsJsonArray("translations");
jobject = jarray.get(0).getAsJsonObject();
String result = jobject.get("translatedText").toString();
return result;
}
rest 模板的简单方法。
final String MANAGEMENT_TOKEN = "ManagementToken";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("Authorization", "Bearer" + " " + MANAGEMENT_TOKEN);
HttpEntity<Object> httpEntity = new HttpEntity<>(httpHeaders);
String url = "https:<//YOUR_DOMAIN>.auth0.com/api/v2/users";
ResponseEntity<Object>response=restTemplate.exchange(url,HttpMethod.GET,httpEntity, Object.class);
`
希望这对您有所帮助