6ef58109f31f3fe2189745c6e7adc506561c9187
[moon.git] /
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.aaa.authn.mdsal.store.util;
10
11 import java.math.BigInteger;
12 import java.util.ArrayList;
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Set;
16 import org.opendaylight.aaa.AuthenticationBuilder;
17 import org.opendaylight.aaa.api.Authentication;
18 import org.opendaylight.aaa.api.Claim;
19 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.TokenCacheTimes;
20 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.Tokencache;
21 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.TokenList;
22 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.TokenListBuilder;
23 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.TokenListKey;
24 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.token_list.UserTokens;
25 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.token_list.UserTokensBuilder;
26 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.token_list.UserTokensKey;
27 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.tokencache.Claims;
28 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.tokencache.ClaimsBuilder;
29 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.tokencache.ClaimsKey;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31
32 public class AuthNStoreUtil {
33
34     public static InstanceIdentifier<Claims> createInstIdentifierForTokencache(String token) {
35         if (token == null || token.length() == 0)
36             return null;
37
38         InstanceIdentifier<Claims> claims_iid = InstanceIdentifier.builder(Tokencache.class)
39                                                                   .child(Claims.class,
40                                                                           new ClaimsKey(token))
41                                                                   .build();
42         return claims_iid;
43     }
44
45     public static InstanceIdentifier<UserTokens> createInstIdentifierUserTokens(String userId,
46             String token) {
47         if (userId == null || userId.length() == 0 || token == null || token.length() == 0)
48             return null;
49
50         InstanceIdentifier<UserTokens> userTokens_iid = InstanceIdentifier.builder(
51                 TokenCacheTimes.class)
52                                                                           .child(TokenList.class,
53                                                                                   new TokenListKey(
54                                                                                           userId))
55                                                                           .child(UserTokens.class,
56                                                                                   new UserTokensKey(
57                                                                                           token))
58                                                                           .build();
59         return userTokens_iid;
60     }
61
62     public static Claims createClaimsRecord(String token, Authentication auth) {
63         if (auth == null || token == null || token.length() == 0)
64             return null;
65
66         ClaimsKey claimsKey = new ClaimsKey(token);
67         ClaimsBuilder claimsBuilder = new ClaimsBuilder();
68         claimsBuilder.setClientId(auth.clientId());
69         claimsBuilder.setDomain(auth.domain());
70         claimsBuilder.setKey(claimsKey);
71         List<String> roles = new ArrayList<String>();
72         roles.addAll(auth.roles());
73         claimsBuilder.setRoles(roles);
74         claimsBuilder.setToken(token);
75         claimsBuilder.setUser(auth.user());
76         claimsBuilder.setUserId(auth.userId());
77         return claimsBuilder.build();
78     }
79
80     public static UserTokens createUserTokens(String token, Long expiration) {
81         if (expiration == null || token == null || token.length() == 0)
82             return null;
83
84         UserTokensBuilder userTokensBuilder = new UserTokensBuilder();
85         userTokensBuilder.setTokenid(token);
86         BigInteger timestamp = BigInteger.valueOf(System.currentTimeMillis());
87         userTokensBuilder.setTimestamp(timestamp);
88         userTokensBuilder.setExpiration(expiration);
89         userTokensBuilder.setKey(new UserTokensKey(token));
90         return userTokensBuilder.build();
91     }
92
93     public static TokenList createTokenList(UserTokens tokens, String userId) {
94         if (tokens == null || userId == null || userId.length() == 0)
95             return null;
96
97         TokenListBuilder tokenListBuilder = new TokenListBuilder();
98         tokenListBuilder.setUserId(userId);
99         tokenListBuilder.setKey(new TokenListKey(userId));
100         List<UserTokens> userTokens = new ArrayList<UserTokens>();
101         userTokens.add(tokens);
102         tokenListBuilder.setUserTokens(userTokens);
103         return tokenListBuilder.build();
104     }
105
106     public static Authentication convertClaimToAuthentication(final Claims claims, Long expiration) {
107         if (claims == null)
108             return null;
109
110         Claim claim = new Claim() {
111             @Override
112             public String clientId() {
113                 return claims.getClientId();
114             }
115
116             @Override
117             public String userId() {
118                 return claims.getUserId();
119             }
120
121             @Override
122             public String user() {
123                 return claims.getUser();
124             }
125
126             @Override
127             public String domain() {
128                 return claims.getDomain();
129             }
130
131             @Override
132             public Set<String> roles() {
133                 return new HashSet<>(claims.getRoles());
134             }
135         };
136         AuthenticationBuilder authBuilder = new AuthenticationBuilder(claim);
137         authBuilder.setExpiration(expiration);
138         return authBuilder.build();
139     }
140 }