2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.aaa.authn.mdsal.store.util;
11 import java.math.BigInteger;
12 import java.util.ArrayList;
13 import java.util.HashSet;
14 import java.util.List;
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;
32 public class AuthNStoreUtil {
34 public static InstanceIdentifier<Claims> createInstIdentifierForTokencache(String token) {
35 if (token == null || token.length() == 0)
38 InstanceIdentifier<Claims> claims_iid = InstanceIdentifier.builder(Tokencache.class)
45 public static InstanceIdentifier<UserTokens> createInstIdentifierUserTokens(String userId,
47 if (userId == null || userId.length() == 0 || token == null || token.length() == 0)
50 InstanceIdentifier<UserTokens> userTokens_iid = InstanceIdentifier.builder(
51 TokenCacheTimes.class)
52 .child(TokenList.class,
55 .child(UserTokens.class,
59 return userTokens_iid;
62 public static Claims createClaimsRecord(String token, Authentication auth) {
63 if (auth == null || token == null || token.length() == 0)
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();
80 public static UserTokens createUserTokens(String token, Long expiration) {
81 if (expiration == null || token == null || token.length() == 0)
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();
93 public static TokenList createTokenList(UserTokens tokens, String userId) {
94 if (tokens == null || userId == null || userId.length() == 0)
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();
106 public static Authentication convertClaimToAuthentication(final Claims claims, Long expiration) {
110 Claim claim = new Claim() {
112 public String clientId() {
113 return claims.getClientId();
117 public String userId() {
118 return claims.getUserId();
122 public String user() {
123 return claims.getUser();
127 public String domain() {
128 return claims.getDomain();
132 public Set<String> roles() {
133 return new HashSet<>(claims.getRoles());
136 AuthenticationBuilder authBuilder = new AuthenticationBuilder(claim);
137 authBuilder.setExpiration(expiration);
138 return authBuilder.build();