mirror of https://github.com/grpc/grpc-java.git
alts: add peer attribute access for the ALTS context (#7108)
* Added Peer Attribute getter for ALTS plumbing
This commit is contained in:
parent
be79f55079
commit
e9ea70935b
|
|
@ -17,6 +17,7 @@
|
||||||
package io.grpc.alts.internal;
|
package io.grpc.alts.internal;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/** AltsAuthContext contains security-related context information about an ALTs connection. */
|
/** AltsAuthContext contains security-related context information about an ALTs connection. */
|
||||||
public final class AltsAuthContext {
|
public final class AltsAuthContext {
|
||||||
|
|
@ -33,6 +34,7 @@ public final class AltsAuthContext {
|
||||||
.setPeerServiceAccount(result.getPeerIdentity().getServiceAccount())
|
.setPeerServiceAccount(result.getPeerIdentity().getServiceAccount())
|
||||||
.setLocalServiceAccount(result.getLocalIdentity().getServiceAccount())
|
.setLocalServiceAccount(result.getLocalIdentity().getServiceAccount())
|
||||||
.setPeerRpcVersions(result.getPeerRpcVersions())
|
.setPeerRpcVersions(result.getPeerRpcVersions())
|
||||||
|
.putAllPeerAttributes(result.getPeerIdentity().getAttributes())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -94,4 +96,13 @@ public final class AltsAuthContext {
|
||||||
public RpcProtocolVersions getPeerRpcVersions() {
|
public RpcProtocolVersions getPeerRpcVersions() {
|
||||||
return context.getPeerRpcVersions();
|
return context.getPeerRpcVersions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get peer attributes.
|
||||||
|
*
|
||||||
|
* @return the context's peer attributes.
|
||||||
|
*/
|
||||||
|
public Map<String, String> getPeerAttributes() {
|
||||||
|
return context.getPeerAttributes();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ package io.grpc.alts.internal;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
@ -35,12 +37,17 @@ public final class AltsAuthContextTest {
|
||||||
private static final String TEST_LOCAL_SERVICE_ACCOUNT = "local@gserviceaccount.com";
|
private static final String TEST_LOCAL_SERVICE_ACCOUNT = "local@gserviceaccount.com";
|
||||||
private static final String TEST_PEER_SERVICE_ACCOUNT = "peer@gserviceaccount.com";
|
private static final String TEST_PEER_SERVICE_ACCOUNT = "peer@gserviceaccount.com";
|
||||||
private static final String TEST_RECORD_PROTOCOL = "ALTSRP_GCM_AES128";
|
private static final String TEST_RECORD_PROTOCOL = "ALTSRP_GCM_AES128";
|
||||||
|
private static final String TEST_PEER_ATTRIBUTES_KEY = "peer";
|
||||||
|
private static final String TEST_PEER_ATTRIBUTES_VALUE = "attributes";
|
||||||
|
|
||||||
|
private Map<String, String> testPeerAttributes;
|
||||||
private HandshakerResult handshakerResult;
|
private HandshakerResult handshakerResult;
|
||||||
private RpcProtocolVersions rpcVersions;
|
private RpcProtocolVersions rpcVersions;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
testPeerAttributes = new HashMap<String, String>();
|
||||||
|
testPeerAttributes.put(TEST_PEER_ATTRIBUTES_KEY, TEST_PEER_ATTRIBUTES_VALUE);
|
||||||
rpcVersions =
|
rpcVersions =
|
||||||
RpcProtocolVersions.newBuilder()
|
RpcProtocolVersions.newBuilder()
|
||||||
.setMaxRpcVersion(
|
.setMaxRpcVersion(
|
||||||
|
|
@ -54,11 +61,14 @@ public final class AltsAuthContextTest {
|
||||||
.setMinor(TEST_MIN_RPC_VERSION_MINOR)
|
.setMinor(TEST_MIN_RPC_VERSION_MINOR)
|
||||||
.build())
|
.build())
|
||||||
.build();
|
.build();
|
||||||
|
Identity.Builder peerIdentity = Identity.newBuilder()
|
||||||
|
.setServiceAccount(TEST_PEER_SERVICE_ACCOUNT);
|
||||||
|
peerIdentity.putAllAttributes(testPeerAttributes);
|
||||||
handshakerResult =
|
handshakerResult =
|
||||||
HandshakerResult.newBuilder()
|
HandshakerResult.newBuilder()
|
||||||
.setApplicationProtocol(TEST_APPLICATION_PROTOCOL)
|
.setApplicationProtocol(TEST_APPLICATION_PROTOCOL)
|
||||||
.setRecordProtocol(TEST_RECORD_PROTOCOL)
|
.setRecordProtocol(TEST_RECORD_PROTOCOL)
|
||||||
.setPeerIdentity(Identity.newBuilder().setServiceAccount(TEST_PEER_SERVICE_ACCOUNT))
|
.setPeerIdentity(peerIdentity)
|
||||||
.setLocalIdentity(Identity.newBuilder().setServiceAccount(TEST_LOCAL_SERVICE_ACCOUNT))
|
.setLocalIdentity(Identity.newBuilder().setServiceAccount(TEST_LOCAL_SERVICE_ACCOUNT))
|
||||||
.setPeerRpcVersions(rpcVersions)
|
.setPeerRpcVersions(rpcVersions)
|
||||||
.build();
|
.build();
|
||||||
|
|
@ -73,5 +83,8 @@ public final class AltsAuthContextTest {
|
||||||
assertEquals(TEST_PEER_SERVICE_ACCOUNT, authContext.getPeerServiceAccount());
|
assertEquals(TEST_PEER_SERVICE_ACCOUNT, authContext.getPeerServiceAccount());
|
||||||
assertEquals(TEST_LOCAL_SERVICE_ACCOUNT, authContext.getLocalServiceAccount());
|
assertEquals(TEST_LOCAL_SERVICE_ACCOUNT, authContext.getLocalServiceAccount());
|
||||||
assertEquals(rpcVersions, authContext.getPeerRpcVersions());
|
assertEquals(rpcVersions, authContext.getPeerRpcVersions());
|
||||||
|
assertEquals(testPeerAttributes, authContext.getPeerAttributes());
|
||||||
|
assertEquals(TEST_PEER_ATTRIBUTES_VALUE, authContext.getPeerAttributes()
|
||||||
|
.get(TEST_PEER_ATTRIBUTES_KEY));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue