1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.security.oauth.provider.attributes;
18
19 import org.springframework.security.access.ConfigAttribute;
20 import org.springframework.security.access.method.AbstractFallbackMethodSecurityMetadataSource;
21 import org.springframework.core.annotation.AnnotationUtils;
22
23 import java.util.Collection;
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.lang.reflect.Method;
27 import java.lang.annotation.Annotation;
28
29
30
31
32
33 public class ConsumerSecurityMetadataSource extends AbstractFallbackMethodSecurityMetadataSource {
34
35 protected List<ConfigAttribute> findAttributes(Class<?> clazz) {
36 return processAnnotations(clazz.getAnnotations());
37 }
38
39 protected List<ConfigAttribute> findAttributes(Method method, Class<?> targetClass) {
40 return processAnnotations(AnnotationUtils.getAnnotations(method));
41 }
42
43 public Collection<ConfigAttribute> getAllConfigAttributes() {
44 return null;
45 }
46
47 private List<ConfigAttribute> processAnnotations(Annotation[] annotations) {
48 if (annotations == null || annotations.length == 0) {
49 return null;
50 }
51 List<ConfigAttribute> attributes = new ArrayList<ConfigAttribute>();
52
53
54
55 for (Annotation a : annotations) {
56 if (a instanceof DenyAllConsumers) {
57 attributes.add(ConsumerSecurityConfig.DENY_ALL_ATTRIBUTE);
58 return attributes;
59 }
60 if (a instanceof PermitAllConsumers) {
61 attributes.add(ConsumerSecurityConfig.PERMIT_ALL_ATTRIBUTE);
62 return attributes;
63 }
64 if (a instanceof ConsumerRolesAllowed) {
65 ConsumerRolesAllowed ra = (ConsumerRolesAllowed) a;
66 for (String role : ra.value()) {
67 attributes.add(new ConsumerSecurityConfig(role, ConsumerSecurityConfig.ConsumerSecurityType.CONSUMER_ROLE));
68 }
69 return attributes;
70 }
71 if (a instanceof ConsumerKeysAllowed) {
72 ConsumerKeysAllowed ka = (ConsumerKeysAllowed) a;
73 for (String key : ka.value()) {
74 attributes.add(new ConsumerSecurityConfig(key, ConsumerSecurityConfig.ConsumerSecurityType.CONSUMER_KEY));
75 }
76 return attributes;
77 }
78 }
79 return null;
80
81
82 }
83
84 }