ThingWorx Modelldefinition in Composer > Sicherheit > Authentifikatoren > Authentifikatoren für Edge-Gerät > Beispiele > Authentifikatorerweiterung für Edge-Gerät – Beispiel
Authentifikatorerweiterung für Edge-Gerät – Beispiel
Das folgende Beispiel zeigt, wie eine Authentifikatorerweiterung für ein Edge-Gerät entwickelt werden kann, um Sicherheitsansprüche zu verwenden, die vom Edge gesendet werden.
Dieses Beispiel zeigt Folgendes:
Erweitert die Klasse SecurityClaimsAuthenticator aus der ThingWorx Platform API, um benutzerdefinierte Verarbeitungslogik in den Methoden matchesAuthRequest und authenticate zu implementieren.
In der Methode matchesAuthRequest:
Die eingehenden Sicherheitsansprüche werden geprüft, um zu sehen, ob sie einen secretTokenKey-Anspruch enthalten.
Wenn die Ansprüche einen secretTokenKey-Anspruch enthalten, gibt die Methode "true" an die Plattform zurück. Dies weist darauf hin, dass dieser Authentifikator verwendet werden sollte, um die Sicherheitsansprüche zu validieren.
In der Methode authenticate:
Ruft secretTokenKey ab.
Wenn secretTokenKey nicht null und nicht leer ist und wenn der Wert dem erwarteten Wert MySecretKey entspricht, gibt die Methode den Wert whoTheySaidTheyWere zurück (ein Benutzer).
Wenn der angegebene Benutzer vorhanden ist, wird er in ThingWorx Platform authentifiziert.
package your.company.thingworx.authenticator;

import com.thingworx.communications.common.SecurityClaims;
import com.thingworx.security.authentication.AuthenticatorException;
import com.thingworx.security.authentication.SecurityClaimsAuthenticator;

/**
* Custom edge security authenticators are based around the "SecurityClaims"
* class. This class is at its essence a wrapper around a map. To use the
* map, one provides
*/
public class CustomEdgeAuthenticator extends SecurityClaimsAuthenticator {

private static final long serialVersionUID = 1L;

/**
* The matchesAuthRequest method is the indicator that this
* authenticator should be used to verify the SecurityClaims object
* presented. This method allows the author to make a determination
* about the claims provided by inspecting the information therein and
* decide if this authenticator
* should be used to try to verify the claims provided or not.
*
* @param SecurityClaims object containing the corresponding security
* information @return boolean indicating the authenticator should be
* used to verify the SecurityClaims provided
*/
@Override
public boolean matchesAuthRequest(SecurityClaims securityClaims) throws
AuthenticatorException {
//in this simple implementation we are looking for a 'secretTokenKey'
//claim. If one is present in the securityClaims object supplied -
//this SecurityClaimsAuthenticator should be used
return securityClaims.getClaims().containsKey("secretTokenKey");
}

/**
* This is the method that must be implemented to ensure the presented
* SecurityClaims are valid.
*
* @param SecurityClaims object containing the corresponding security
* information @return String indicating the corresponding user identity
* which the SecurityClaims represent.
*/
@Override
public String authenticate(SecurityClaims securityClaims) throws
AuthenticatorException {
String secretTokenValue = securityClaims.getClaims().get
("secretTokenKey");

if(secretTokenValue != null && secretTokenValue.trim().length() > 0)
{
//the secretTokenValue was provided - verify it is the proper
value!
if("MySecretKey".equals(secretTokenValue)) {
//Only when all these checks are complete will we consider
// the auth request to be valid. Here we have permitted the
// user to tell the platform "who" they are via the
// SecurityClaims
//This is a naieve example - and is for illustrative
// purposes only.
return securityClaims.getClaims().get("whoTheySaidTheyWere");
}
}

//throw a generic exception - and do not leak important information
//to the caller
throw new AuthenticatorException("The claims provided are incorrect");
}
}
War dies hilfreich?