/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.aaa.authn.mdsal.store.util; import org.opendaylight.aaa.AuthenticationBuilder; import org.opendaylight.aaa.api.Authentication; import org.opendaylight.aaa.api.Claim; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.TokenCacheTimes; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.Tokencache; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.TokenList; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.TokenListBuilder; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.TokenListKey; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.token_list.UserTokens; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.token_list.UserTokensBuilder; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.token_cache_times.token_list.UserTokensKey; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.tokencache.Claims; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.tokencache.ClaimsBuilder; import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.tokencache.ClaimsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import java.math.BigInteger; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class AuthNStoreUtil { public static InstanceIdentifier createInstIdentifierForTokencache(String token) { InstanceIdentifier claims_iid = InstanceIdentifier.builder(Tokencache.class) .child(Claims.class, new ClaimsKey(token)) .build(); return claims_iid; } public static InstanceIdentifier createInstIdentifierUserTokens(String userId, String token) { InstanceIdentifier userTokens_iid = InstanceIdentifier.builder(TokenCacheTimes.class) .child(TokenList.class, new TokenListKey(userId)) .child(UserTokens.class, new UserTokensKey(token)) .build(); return userTokens_iid; } public static Claims createClaimsRecord(String token, Authentication auth) { ClaimsKey claimsKey = new ClaimsKey(token);// ClaimsBuilder claimsBuilder = new ClaimsBuilder(); claimsBuilder.setClientId(auth.clientId()); claimsBuilder.setDomain(auth.domain()); claimsBuilder.setKey(claimsKey); // List roles = new ArrayList(); roles.addAll(auth.roles()); claimsBuilder.setRoles(roles); claimsBuilder.setToken(token); claimsBuilder.setUser(auth.user()); claimsBuilder.setUserId(auth.userId()); return claimsBuilder.build(); } public static UserTokens createUserTokens(String token, Long expiration) { UserTokensBuilder userTokensBuilder = new UserTokensBuilder(); userTokensBuilder.setTokenid(token); BigInteger timestamp = BigInteger.valueOf(System.currentTimeMillis()); userTokensBuilder.setTimestamp(timestamp); userTokensBuilder.setExpiration(expiration); userTokensBuilder.setKey(new UserTokensKey(token)); return userTokensBuilder.build(); } public static TokenList createTokenList(UserTokens tokens, String userId) { TokenListBuilder tokenListBuilder = new TokenListBuilder(); tokenListBuilder.setUserId(userId); tokenListBuilder.setKey(new TokenListKey(userId)); List userTokens = new ArrayList(); userTokens.add(tokens); tokenListBuilder.setUserTokens(userTokens); return tokenListBuilder.build(); } public static Authentication convertClaimToAuthentication(final Claims claims, Long expiration) { Claim claim = new Claim() { @Override public String clientId() { return claims.getClientId(); } @Override public String userId() { return claims.getUserId(); } @Override public String user() { return claims.getUser(); } @Override public String domain() { return claims.getDomain(); } @Override public Set roles() { return new HashSet<>(claims.getRoles()); } }; AuthenticationBuilder authBuilder = new AuthenticationBuilder(claim); authBuilder.setExpiration(expiration); return authBuilder.build(); } }