1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.helper;
17
18 import java.security.SecureRandom;
19 import java.util.Random;
20
21 import org.apache.commons.lang3.RandomStringUtils;
22 import org.codelibs.core.lang.StringUtil;
23 import org.codelibs.fess.exception.InvalidAccessTokenException;
24 import org.codelibs.fess.util.ComponentUtil;
25
26 import jakarta.servlet.http.HttpServletRequest;
27
28
29
30
31 public class AccessTokenHelper {
32
33
34
35
36 public AccessTokenHelper() {
37
38 }
39
40
41
42
43 protected static final String BEARER = "Bearer";
44
45
46
47
48 protected Random random = new SecureRandom();
49
50
51
52
53
54 public String generateAccessToken() {
55 return RandomStringUtils.random(ComponentUtil.getFessConfig().getApiAccessTokenLengthAsInteger(), 0, 0, true, true, null, random);
56 }
57
58
59
60
61
62
63 public String getAccessTokenFromRequest(final HttpServletRequest request) {
64 final String token = request.getHeader("Authorization");
65 if (token != null) {
66 final String[] values = token.trim().split(" ");
67 if (values.length == 2 && BEARER.equals(values[0])) {
68 return values[1];
69 }
70 if (values.length == 1 && !BEARER.equals(values[0])) {
71 return values[0];
72 }
73 throw new InvalidAccessTokenException("invalid_request", "Invalid format: " + token);
74 }
75 final String name = ComponentUtil.getFessConfig().getApiAccessTokenRequestParameter();
76 if (StringUtil.isNotBlank(name)) {
77 return request.getParameter(name);
78 }
79 return null;
80 }
81
82
83
84
85
86 public void setRandom(final Random random) {
87 this.random = random;
88 }
89 }