diff --git a/server/common/utils/src/main/java/org/kaaproject/kaa/server/common/utils/CRC32Util.java b/server/common/utils/src/main/java/org/kaaproject/kaa/server/common/utils/CRC32Util.java new file mode 100644 index 0000000000..2d0a647f08 --- /dev/null +++ b/server/common/utils/src/main/java/org/kaaproject/kaa/server/common/utils/CRC32Util.java @@ -0,0 +1,44 @@ +/* + * Copyright 2014 CyberVision, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.kaaproject.kaa.server.common.utils; + +import java.nio.charset.Charset; +import java.util.zip.CRC32; + +/** + * + * An util class that provides convenient methods to get crc32 checksum from {@link String} + * + * @author Andrew Shvayka + * + */ +public class CRC32Util { + + private static final Charset UTF8 = Charset.forName("UTF-8"); + + /** + * Calculates the crc32 hash based on the name parameter. + * + * @param name + * the name parameter + * @return crc32 hash + */ + public static int crc32(String name) { + CRC32 crc32 = new CRC32(); + crc32.update(name.getBytes(UTF8)); + return (int) crc32.getValue(); + } +} diff --git a/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierCallback.java b/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierCallback.java index 72acfd9d7d..77a000ca59 100644 --- a/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierCallback.java +++ b/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierCallback.java @@ -52,14 +52,29 @@ public interface UserVerifierCallback { */ void onInternalError(); + /** + * Failed verification due to internal error + */ + void onInternalError(String reason); + /** * Failed verification due to connection error */ void onConnectionError(); + /** + * Failed verification due to connection error + */ + void onConnectionError(String reason); + /** * Failed verification due to remote authentication service error */ void onRemoteError(); + /** + * Failed verification due to remote authentication service error + */ + void onRemoteError(String reason); + } diff --git a/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierErrorCode.java b/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierErrorCode.java new file mode 100644 index 0000000000..a05c89b707 --- /dev/null +++ b/server/common/verifier-shared/src/main/java/org/kaaproject/kaa/server/common/verifier/UserVerifierErrorCode.java @@ -0,0 +1,11 @@ +package org.kaaproject.kaa.server.common.verifier; + +public enum UserVerifierErrorCode { + NO_VERIFIER_CONFIGURED, + TOKEN_INVALID, + TOKEN_EXPIRED, + INTERNAL_ERROR, + CONNECTION_ERROR, + REMOTE_ERROR, + OTHER +} diff --git a/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/ServerNameUtil.java b/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/ServerNameUtil.java index 88b3d99b2a..ab88709043 100644 --- a/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/ServerNameUtil.java +++ b/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/ServerNameUtil.java @@ -58,16 +58,4 @@ public static int crc32(ConnectionInfo connectionInfo) { crc32.update(getNameFromConnectionInfo(connectionInfo).getBytes(UTF8)); return (int) crc32.getValue(); } - - /** - * Calculates the crc32 hash based on the name parameter. - * - * @param name the name parameter - * @return crc32 hash - */ - public static int crc32(String name) { - CRC32 crc32 = new CRC32(); - crc32.update(name.getBytes(UTF8)); - return (int) crc32.getValue(); - } } diff --git a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationLogActorMessageProcessor.java b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationLogActorMessageProcessor.java index 0ec9824ef5..b1c56461b9 100644 --- a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationLogActorMessageProcessor.java +++ b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationLogActorMessageProcessor.java @@ -166,7 +166,6 @@ private void addLogAppender(String appenderId) { LogAppender logAppender = logAppenderService.getApplicationAppender(appenderId); if (logAppender != null) { addAppender(appenderId, logAppender); - } else { LOG.info("[{}] Log appender [{}] registered.", applicationId, appenderId); } } else { diff --git a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationUserVerifierActorMessageProcessor.java b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationUserVerifierActorMessageProcessor.java index 0c0acf65e5..4ff9208a40 100644 --- a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationUserVerifierActorMessageProcessor.java +++ b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/actors/core/ApplicationUserVerifierActorMessageProcessor.java @@ -1,17 +1,38 @@ +/* + * Copyright 2014 CyberVision, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.kaaproject.kaa.server.operations.service.akka.actors.core; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import org.kaaproject.kaa.common.dto.user.UserVerifierDto; import org.kaaproject.kaa.server.common.thrift.gen.operations.Notification; import org.kaaproject.kaa.server.common.verifier.UserVerifier; +import org.kaaproject.kaa.server.common.verifier.UserVerifierCallback; import org.kaaproject.kaa.server.common.verifier.UserVerifierContext; +import org.kaaproject.kaa.server.common.verifier.UserVerifierErrorCode; import org.kaaproject.kaa.server.operations.service.akka.messages.core.user.verification.UserVerificationRequestMessage; +import org.kaaproject.kaa.server.operations.service.akka.messages.core.user.verification.UserVerificationResponseMessage; import org.kaaproject.kaa.server.operations.service.user.EndpointUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import akka.actor.ActorRef; + public class ApplicationUserVerifierActorMessageProcessor { private static final Logger LOG = LoggerFactory.getLogger(ApplicationUserVerifierActorMessageProcessor.class); @@ -34,7 +55,8 @@ private void initUserVerifiers() { for (UserVerifierDto dto : endpointUserService.findUserVerifiers(applicationId)) { try { LOG.trace("Initializing user verifier for {}", dto); - userVerifiers.put(dto.getVerifierId(), createUserVerifier(dto)); + UserVerifier verifier = createUserVerifier(dto); + userVerifiers.put(dto.getVerifierId(), verifier); } catch (Exception e) { LOG.error("Failed to create user verifier", e); } @@ -60,22 +82,133 @@ private UserVerifier createUserVerifier(UserVerifierDto verifierDto) throws Refl throw e; } } - + public void verifyUser(UserVerificationRequestMessage message) { - // TODO Auto-generated method stub + UserVerifier verifier = userVerifiers.get(message.getVerifierId()); + if (verifier != null) { + + } else { + message.getOriginator().tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.NO_VERIFIER_CONFIGURED), + ActorRef.noSender()); + } } public void processNotification(Notification notification) { - // TODO Auto-generated method stub + LOG.debug("Process user verifier notification [{}]", notification); + int verifierId = notification.getUserVerifierId(); + switch (notification.getOp()) { + case ADD_USER_VERIFIER: + addUserVerifier(verifierId); + break; + case REMOVE_USER_VERIFIER: + removeUserVerifier(verifierId); + break; + case UPDATE_USER_VERIFIER: + removeUserVerifier(verifierId); + addUserVerifier(verifierId); + break; + default: + LOG.debug("[{}][{}] Operation [{}] is not supported.", applicationId, verifierId, notification.getOp()); + } + } + + private void addUserVerifier(int verifierId) { + LOG.info("[{}] Adding user verifier with id [{}].", applicationId, verifierId); + if (!userVerifiers.containsKey(verifierId)) { + UserVerifierDto verifierDto = endpointUserService.findUserVerifier(applicationId, verifierId); + if (verifierDto != null) { + try { + userVerifiers.put(verifierId, createUserVerifier(verifierDto)); + LOG.info("[{}] user verifier [{}] registered.", applicationId, verifierId); + } catch (Exception e) { + LOG.error("Failed to create user verifier", e); + } + } + } else { + LOG.info("[{}] User verifier [{}] is already registered.", applicationId, verifierId); + } + } + + private void removeUserVerifier(int appenderId) { + if (userVerifiers.containsKey(appenderId)) { + LOG.info("[{}] Stopping user verifier with id [{}].", applicationId, appenderId); + userVerifiers.remove(appenderId).stop(); + } else { + LOG.warn("[{}] Can't remove unregistered user verifier with id [{}]", applicationId, appenderId); + } } void preStart() { }; void postStop() { - for (UserVerifier verifier : userVerifiers.values()) { - verifier.stop(); + for (Entry verifier : userVerifiers.entrySet()) { + LOG.info("[{}] Stopping user verifier with id [{}].", applicationId, verifier.getKey()); + verifier.getValue().stop(); } } + public static class DefaultVerifierCallback implements UserVerifierCallback { + + private final ActorRef endpointActor; + + public DefaultVerifierCallback(ActorRef endpointActor) { + super(); + this.endpointActor = endpointActor; + } + + private void tell(UserVerificationResponseMessage msg){ + endpointActor.tell(msg, ActorRef.noSender()); + } + + @Override + public void onSuccess() { + tell(UserVerificationResponseMessage.success()); + } + + @Override + public void onTokenInvalid() { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.TOKEN_INVALID)); + } + + @Override + public void onTokenExpired() { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.TOKEN_EXPIRED)); + } + + @Override + public void onVerificationFailure(String reason) { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.OTHER, reason)); + } + + @Override + public void onInternalError() { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.INTERNAL_ERROR)); + } + + @Override + public void onInternalError(String reason) { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.TOKEN_EXPIRED, reason)); + } + + @Override + public void onConnectionError() { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.CONNECTION_ERROR)); + } + + @Override + public void onConnectionError(String reason) { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.CONNECTION_ERROR, reason)); + } + + @Override + public void onRemoteError() { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.REMOTE_ERROR)); + } + + @Override + public void onRemoteError(String reason) { + tell(UserVerificationResponseMessage.failure(UserVerifierErrorCode.REMOTE_ERROR, reason)); + } + } } diff --git a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationRequestMessage.java b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationRequestMessage.java index 74f4412a63..c372ac7b7c 100644 --- a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationRequestMessage.java +++ b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationRequestMessage.java @@ -1,5 +1,63 @@ +/* + * Copyright 2014 CyberVision, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.kaaproject.kaa.server.operations.service.akka.messages.core.user.verification; +import akka.actor.ActorRef; + public class UserVerificationRequestMessage { + private final ActorRef originator; + private final int verifierId; + private final String userId; + private final String accessToken; + + public UserVerificationRequestMessage(ActorRef originator, int verifierId, String userId, String accessToken) { + super(); + this.originator = originator; + this.verifierId = verifierId; + this.userId = userId; + this.accessToken = accessToken; + } + + public int getVerifierId() { + return verifierId; + } + + public String getUserId() { + return userId; + } + + public String getAccessToken() { + return accessToken; + } + + public ActorRef getOriginator() { + return originator; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("UserVerificationRequestMessage [verifierId="); + builder.append(verifierId); + builder.append(", userId="); + builder.append(userId); + builder.append(", accessToken="); + builder.append(accessToken); + builder.append("]"); + return builder.toString(); + } } diff --git a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationResponseMessage.java b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationResponseMessage.java index dbb8cb8944..742d136408 100644 --- a/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationResponseMessage.java +++ b/server/operations/src/main/java/org/kaaproject/kaa/server/operations/service/akka/messages/core/user/verification/UserVerificationResponseMessage.java @@ -1,5 +1,54 @@ package org.kaaproject.kaa.server.operations.service.akka.messages.core.user.verification; +import org.kaaproject.kaa.server.common.verifier.UserVerifierErrorCode; + public class UserVerificationResponseMessage { + private boolean success; + private UserVerifierErrorCode errorCode; + private String failureReason; + + private UserVerificationResponseMessage(boolean success, UserVerifierErrorCode errorCode, String failureReason) { + super(); + this.success = success; + this.errorCode = errorCode; + this.failureReason = failureReason; + } + + public static UserVerificationResponseMessage success() { + return new UserVerificationResponseMessage(true, null, null); + } + + public static UserVerificationResponseMessage failure(UserVerifierErrorCode errorCode) { + return failure(errorCode, null); + } + + public static UserVerificationResponseMessage failure(UserVerifierErrorCode errorCode, String failureReason) { + return new UserVerificationResponseMessage(false, errorCode, failureReason); + } + + public boolean isSuccess() { + return success; + } + + public UserVerifierErrorCode getErrorCode() { + return errorCode; + } + + public String getFailureReason() { + return failureReason; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("UserVerificationResponseMessage [success="); + builder.append(success); + builder.append(", errorCode="); + builder.append(errorCode); + builder.append(", failureReason="); + builder.append(failureReason); + builder.append("]"); + return builder.toString(); + } } diff --git a/server/transports/http/config/src/main/java/org/kaaproject/kaa/server/transport/http/config/HttpTransportConfig.java b/server/transports/http/config/src/main/java/org/kaaproject/kaa/server/transport/http/config/HttpTransportConfig.java index f30c2d725a..32f16c63dc 100644 --- a/server/transports/http/config/src/main/java/org/kaaproject/kaa/server/transport/http/config/HttpTransportConfig.java +++ b/server/transports/http/config/src/main/java/org/kaaproject/kaa/server/transport/http/config/HttpTransportConfig.java @@ -16,6 +16,7 @@ package org.kaaproject.kaa.server.transport.http.config; import org.apache.avro.Schema; +import org.kaaproject.kaa.server.common.utils.CRC32Util; import org.kaaproject.kaa.server.common.zk.ServerNameUtil; import org.kaaproject.kaa.server.transport.KaaTransportConfig; import org.kaaproject.kaa.server.transport.TransportConfig; @@ -31,7 +32,7 @@ public class HttpTransportConfig implements TransportConfig { private static final String HTTP_TRANSPORT_NAME = "org.kaaproject.kaa.server.transport.http"; - private static final int HTTP_TRANSPORT_ID = ServerNameUtil.crc32(HTTP_TRANSPORT_NAME); + private static final int HTTP_TRANSPORT_ID = CRC32Util.crc32(HTTP_TRANSPORT_NAME); private static final String HTTP_TRANSPORT_CLASS = "org.kaaproject.kaa.server.transports.http.transport.HttpTransport"; private static final String HTTP_TRANSPORT_CONFIG = "http-transport.config"; diff --git a/server/transports/tcp/config/src/main/java/org/kaaproject/kaa/server/transport/tcp/config/TcpTransportConfig.java b/server/transports/tcp/config/src/main/java/org/kaaproject/kaa/server/transport/tcp/config/TcpTransportConfig.java index 9e0a533f64..8efd448079 100644 --- a/server/transports/tcp/config/src/main/java/org/kaaproject/kaa/server/transport/tcp/config/TcpTransportConfig.java +++ b/server/transports/tcp/config/src/main/java/org/kaaproject/kaa/server/transport/tcp/config/TcpTransportConfig.java @@ -16,7 +16,7 @@ package org.kaaproject.kaa.server.transport.tcp.config; import org.apache.avro.Schema; -import org.kaaproject.kaa.server.common.zk.ServerNameUtil; +import org.kaaproject.kaa.server.common.utils.CRC32Util; import org.kaaproject.kaa.server.transport.KaaTransportConfig; import org.kaaproject.kaa.server.transport.TransportConfig; import org.kaaproject.kaa.server.transport.tcp.config.gen.AvroTcpConfig; @@ -30,7 +30,7 @@ @KaaTransportConfig public class TcpTransportConfig implements TransportConfig { private static final String TCP_TRANSPORT_NAME = "org.kaaproject.kaa.server.transport.tcp"; - private static final int TCP_TRANSPORT_ID = ServerNameUtil.crc32(TCP_TRANSPORT_NAME); + private static final int TCP_TRANSPORT_ID = CRC32Util.crc32(TCP_TRANSPORT_NAME); private static final String TCP_TRANSPORT_CLASS = "org.kaaproject.kaa.server.transports.tcp.transport.TcpTransport"; private static final String TCP_TRANSPORT_CONFIG = "tcp-transport.config"; diff --git a/server/verifiers/trustful-verifier/config/pom.xml b/server/verifiers/trustful-verifier/config/pom.xml index 797e0ced3f..58be54533d 100644 --- a/server/verifiers/trustful-verifier/config/pom.xml +++ b/server/verifiers/trustful-verifier/config/pom.xml @@ -35,6 +35,10 @@ + + org.kaaproject.kaa.server.common + utils + org.kaaproject.kaa.server.common verifier-shared diff --git a/server/verifiers/trustful-verifier/config/src/main/avro/config.avsc b/server/verifiers/trustful-verifier/config/src/main/avro/config.avsc new file mode 100644 index 0000000000..1a04572640 --- /dev/null +++ b/server/verifiers/trustful-verifier/config/src/main/avro/config.avsc @@ -0,0 +1,6 @@ +{ + "namespace": "org.kaaproject.kaa.server.verifiers.trustful.config.gen", + "type": "record", + "name": "TrustfulAvroConfig", + "fields": [] +} \ No newline at end of file diff --git a/server/verifiers/trustful-verifier/config/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/config/TrustfulVerifierConfig.java b/server/verifiers/trustful-verifier/config/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/config/TrustfulVerifierConfig.java new file mode 100644 index 0000000000..a5601bb34c --- /dev/null +++ b/server/verifiers/trustful-verifier/config/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/config/TrustfulVerifierConfig.java @@ -0,0 +1,34 @@ +package org.kaaproject.kaa.server.verifiers.trustful.config; + +import org.apache.avro.Schema; +import org.kaaproject.kaa.server.common.utils.CRC32Util; +import org.kaaproject.kaa.server.common.verifier.KaaUserVerifierConfig; +import org.kaaproject.kaa.server.common.verifier.UserVerifierConfig; +import org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig; + +@KaaUserVerifierConfig +public class TrustfulVerifierConfig implements UserVerifierConfig{ + + private static final String ORG_KAAPROJECT_KAA_SERVER_VERIFIERS_TRUSTFUL = "org.kaaproject.kaa.server.verifiers.trustful"; + + @Override + public int getId() { + return CRC32Util.crc32(getName()); + } + + @Override + public String getName() { + return ORG_KAAPROJECT_KAA_SERVER_VERIFIERS_TRUSTFUL; + } + + @Override + public String getUserVerifierClass() { + return "org.kaaproject.kaa.server.verifiers.trustful.TrustfulUserVerifier"; + } + + @Override + public Schema getConfigSchema() { + return TrustfulAvroConfig.SCHEMA$; + } + +} diff --git a/server/verifiers/trustful-verifier/config/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/config/gen/TrustfulAvroConfig.java b/server/verifiers/trustful-verifier/config/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/config/gen/TrustfulAvroConfig.java new file mode 100644 index 0000000000..fb09c41d51 --- /dev/null +++ b/server/verifiers/trustful-verifier/config/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/config/gen/TrustfulAvroConfig.java @@ -0,0 +1,75 @@ +/** + * Autogenerated by Avro + * + * DO NOT EDIT DIRECTLY + */ +package org.kaaproject.kaa.server.verifiers.trustful.config.gen; +@SuppressWarnings("all") +@org.apache.avro.specific.AvroGenerated +public class TrustfulAvroConfig extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord { + public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"TrustfulAvroConfig\",\"namespace\":\"org.kaaproject.kaa.server.verifiers.trustful.config.gen\",\"fields\":[]}"); + public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; } + + public org.apache.avro.Schema getSchema() { return SCHEMA$; } + // Used by DatumWriter. Applications should not call. + public java.lang.Object get(int field$) { + switch (field$) { + default: throw new org.apache.avro.AvroRuntimeException("Bad index"); + } + } + // Used by DatumReader. Applications should not call. + @SuppressWarnings(value="unchecked") + public void put(int field$, java.lang.Object value$) { + switch (field$) { + default: throw new org.apache.avro.AvroRuntimeException("Bad index"); + } + } + + /** Creates a new TrustfulAvroConfig RecordBuilder */ + public static org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder newBuilder() { + return new org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder(); + } + + /** Creates a new TrustfulAvroConfig RecordBuilder by copying an existing Builder */ + public static org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder newBuilder(org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder other) { + return new org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder(other); + } + + /** Creates a new TrustfulAvroConfig RecordBuilder by copying an existing TrustfulAvroConfig instance */ + public static org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder newBuilder(org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig other) { + return new org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder(other); + } + + /** + * RecordBuilder for TrustfulAvroConfig instances. + */ + public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase + implements org.apache.avro.data.RecordBuilder { + + + /** Creates a new Builder */ + private Builder() { + super(org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.SCHEMA$); + } + + /** Creates a Builder by copying an existing Builder */ + private Builder(org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.Builder other) { + super(other); + } + + /** Creates a Builder by copying an existing TrustfulAvroConfig instance */ + private Builder(org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig other) { + super(org.kaaproject.kaa.server.verifiers.trustful.config.gen.TrustfulAvroConfig.SCHEMA$); + } + + @Override + public TrustfulAvroConfig build() { + try { + TrustfulAvroConfig record = new TrustfulAvroConfig(); + return record; + } catch (Exception e) { + throw new org.apache.avro.AvroRuntimeException(e); + } + } + } +} diff --git a/server/verifiers/trustful-verifier/verifier/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/verifier/TrustfulUserVerifier.java b/server/verifiers/trustful-verifier/verifier/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/verifier/TrustfulUserVerifier.java new file mode 100644 index 0000000000..ce2be19050 --- /dev/null +++ b/server/verifiers/trustful-verifier/verifier/src/main/java/org/kaaproject/kaa/server/verifiers/trustful/verifier/TrustfulUserVerifier.java @@ -0,0 +1,33 @@ +package org.kaaproject.kaa.server.verifiers.trustful.verifier; + +import org.kaaproject.kaa.server.common.verifier.UserVerifier; +import org.kaaproject.kaa.server.common.verifier.UserVerifierCallback; +import org.kaaproject.kaa.server.common.verifier.UserVerifierContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TrustfulUserVerifier implements UserVerifier { + private static final Logger LOG = LoggerFactory.getLogger(TrustfulUserVerifier.class); + + @Override + public void init(UserVerifierContext context) { + LOG.info("Initializing user verifier with {}", context); + } + + @Override + public void checkAccessToken(String userExternalId, String accessToken, UserVerifierCallback callback) { + LOG.trace("Received user verification request for user {} and access token {}", userExternalId, accessToken); + callback.onSuccess(); + } + + @Override + public void start() { + LOG.info("user verifier started"); + } + + @Override + public void stop() { + LOG.info("user verifier stopped"); + } + +}