- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文整理了Java中com.yubico.client.v2.YubicoClient
类的一些代码示例,展示了YubicoClient
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。YubicoClient
类的具体详情如下:
包路径:com.yubico.client.v2.YubicoClient
类名称:YubicoClient
[英]Base class for doing YubiKey validations using version 2 of the validation protocol.
[中]用于使用验证协议版本2进行YubiKey验证的基类。
代码示例来源:origin: Yubico/yubico-java-client
@Path("register")
@POST
public String register(@FormParam("username") String username, @FormParam("otp") String otp) throws Exception {
VerificationResponse response = client.verify(otp);
if (response.isOk()) {
String yubikeyId = YubicoClient.getPublicId(otp);
yubikeyIds.put(username, yubikeyId);
return "Successfully registered YubiKey!" + NAVIGATION;
}
return "Invalid OTP: " + response;
}
代码示例来源:origin: net.unicon.cas/cas-addons
/**
* Prepares the Yubico client with the received clientId and secretKey. By default,
* all YubiKey accounts are allowed to authenticate.
* <p/>
* WARNING: THIS CONSTRUCTOR RESULTS IN AN EXAMPLE YubiKeyAuthenticationHandler
* CONFIGURATION THAT CONSIDERS ALL Yubikeys VALID FOR ALL USERS. YOU MUST NOT USE
* THIS CONSTRUCTOR IN PRODUCTION.
*
* @param clientId
* @param secretKey
*/
public YubiKeyAuthenticationHandler(final Integer clientId, final String secretKey) {
this.client = YubicoClient.getClient(clientId);
this.client.setKey(secretKey);
}
代码示例来源:origin: net.unicon.cas/cas-addons
final String otp = usernamePasswordCredentials.getPassword();
if (YubicoClient.isValidOTPFormat(otp)) {
final String publicId = YubicoClient.getPublicId(otp);
final YubicoResponse response = client.verify(otp);
log.debug("YubiKey response status {} at {}", response.getStatus(), response.getTimestamp());
return (response.getStatus() == YubicoResponseStatus.OK);
代码示例来源:origin: Yubico/yubico-java-client
public static void main (String args []) throws Exception
{
if (args.length != 3) {
System.err.println("\n*** Test your Yubikey against Yubico OTP validation server ***");
System.err.println("\nUsage: java -jar client.jar Client_ID Client_key OTP");
System.err.println("\nEg. java -jar client.jar 28 vvfucnlcrrnejlbuthlktguhclhvegbungldcrefbnku");
System.err.println("\nTouch Yubikey to generate the OTP. Visit Yubico.com for more details.");
return;
}
String otp = args[2];
YubicoClient yc = YubicoClient.getClient(Integer.parseInt(args[0]), args[1]);
VerificationResponse response = yc.verify(otp);
if(response!=null && response.getStatus() == ResponseStatus.OK) {
System.out.println("\n* OTP verified OK");
} else {
System.out.println("\n* Failed to verify OTP");
}
System.out.println("\n* Last response: " + response);
System.exit(0);
} // End of main
代码示例来源:origin: Yubico/yubico-java-client
this.yc = YubicoClient.getClient(clientId, clientKey);
String in = options.get(OPTION_YUBICO_WSAPI_URLS).toString();
String l[] = in.split("\\|");
this.yc.setWsapiUrls(l);
this.yc.setSync(Integer.parseInt(options.get(OPTION_YUBICO_SYNC_POLICY).toString()));
代码示例来源:origin: org.apereo.cas/cas-server-support-yubikey-core
if (!YubicoClient.isValidOTPFormat(otp)) {
LOGGER.debug("Invalid OTP format [{}]", otp);
throw new AccountNotFoundException("OTP format is invalid");
val response = this.client.verify(otp);
val status = response.getStatus();
if (status.compareTo(ResponseStatus.OK) == 0) {
代码示例来源:origin: org.apereo.cas/cas-server-support-yubikey-core-mfa
/**
* Gets token public id.
*
* @param token the token
* @return the token public id
*/
default String getTokenPublicId(final String token) {
return YubicoClient.getPublicId(token);
}
}
代码示例来源:origin: org.apereo.cas/cas-server-support-yubikey
@RefreshScope
@Bean
@ConditionalOnMissingBean(name = "yubicoClient")
public YubicoClient yubicoClient() {
val yubi = this.casProperties.getAuthn().getMfa().getYubikey();
if (StringUtils.isBlank(yubi.getSecretKey())) {
throw new IllegalArgumentException("Yubikey secret key cannot be blank");
}
if (yubi.getClientId() <= 0) {
throw new IllegalArgumentException("Yubikey client id is undefined");
}
val client = YubicoClient.getClient(yubi.getClientId(), yubi.getSecretKey());
if (!yubi.getApiUrls().isEmpty()) {
val urls = yubi.getApiUrls().toArray(ArrayUtils.EMPTY_STRING_ARRAY);
client.setWsapiUrls(urls);
}
return client;
}
代码示例来源:origin: org.apereo.cas/cas-server-support-yubikey-core
@Override
public boolean isValid(final String uid, final String token) {
try {
val yubikeyPublicId = getTokenPublicId(token);
if (StringUtils.isNotBlank(yubikeyPublicId)) {
val response = this.client.verify(token);
val status = response.getStatus();
if (status.compareTo(ResponseStatus.OK) == 0) {
LOGGER.debug("YubiKey response status [{}] at [{}]", status, response.getTimestamp());
return true;
}
LOGGER.error("Failed to verify YubiKey token: [{}]", response);
} else {
LOGGER.error("Invalid YubiKey token: [{}]", token);
}
} catch (final Exception e) {
LOGGER.error(e.getMessage(), e);
}
return false;
}
}
代码示例来源:origin: org.apereo.cas/cas-server-support-yubikey-core-mfa
@Override
public boolean isAvailable(final RegisteredService service) {
try {
val endpoints = client.getWsapiUrls();
for (val endpoint : endpoints) {
LOGGER.debug("Pinging YubiKey API endpoint at [{}]", endpoint);
val msg = this.httpClient.sendMessageToEndPoint(new URL(endpoint));
val message = msg != null ? msg.getMessage() : null;
if (StringUtils.isNotBlank(message)) {
val response = EncodingUtils.urlDecode(message);
LOGGER.debug("Received YubiKey ping response [{}]", response);
return true;
}
}
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
return false;
}
代码示例来源:origin: Yubico/yubico-java-client
public String getPublicId() {
return YubicoClient.getPublicId(otp);
}
}
代码示例来源:origin: Yubico/yubico-java-client
@Path("login")
@POST
public String login(@FormParam("username") String username, @FormParam("otp") String otp) throws Exception {
VerificationResponse response = client.verify(otp);
if (response.isOk()) {
String yubikeyId = YubicoClient.getPublicId(otp);
if(yubikeyIds.get(username).contains(yubikeyId)) {
return "Success fully logged in " + username + "!" + NAVIGATION;
}
return "No such username and YubiKey combination.";
}
return "Invalid OTP: " + response;
}
}
代码示例来源:origin: Yubico/yubico-java-client
ykr = this.yc.verify(otp);
} catch (YubicoVerificationException e) {
log.warn("Errors during validation: ", e);
log.trace("OTP {} verify result : {}", otp, ykr.getStatus().toString());
if (ykr.getStatus() == ResponseStatus.OK) {
String publicId = YubicoClient.getPublicId(otp);
log.info("OTP verified successfully (YubiKey id {})", publicId);
if (is_right_user(nameCb.getName(), publicId)) {
我有一个 k*n矩阵 X 和 k*k矩阵A。对于X的每一列,我想计算标量 X[:, i].T.dot(A).dot(X[:, i]) (或者,数学上, Xi' * A * Xi )。 目前,我有一个
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我是 VueJS 的新手。我已经使用 vuetify/webpack-ssr 模板创建了一个项目,现在我想创建一个登录页面,但是没有显示表单,控制台给了我以下信息: [Vue warn]: Unkno
我尝试将 value 插入到 C++ vector v 之前的第 i 元素(或元素 (i-1) 之后) )。代码很简单 v.insert(v.begin() + i, value); 我确信当 i 介
我需要显示使用合并排序算法排序的 vector 。然而,当我使用 v.begin() 时,我的 friend 使用 v.data() 来传递 vector 。他的代码运行良好,而我的却不行。请解释。
这是我的命令(url1、url2、url3、url4 是占位符): ffmpeg -i url1 -i url2 -i url3 -i url4 -filter_complex “[1:v:0] [1
我以前用过Vue,我知道怎么用v-for渲染元素序列,v-if或v-show有条件地显示元素,并且 v-model例如,控制段落的内容。 但现在我需要对 DOM 进行更精细的控制: 我有一个range
我正在学习所有权和借用。 borrow1 和borrow2 的区别在于在borrow2 打印时使用了&: fn borrow1(v: &Vec) { println!("{}", &v[10]
我找不到一种方法来选择不同的选项来渲染 v-for 中的文本。是否有可能或者我是否需要以不同的方式构建逻辑来执行类似于下面的代码的操作? // i
Iterable 的三个直接子类型是 Map , Seq , 和 Set .除了性能问题之外,似乎还有一个 Seq是从整数到值的映射,以及 Set是从值到 bool 值的映射(如果值在集合中,则为 t
我想应用一个计算方法,如果键存在则增加值,否则将 1。有 Map map = new HashMap<>(); 我不明白为什么 for (int i = 0; i v != null ? v++ :
标准(IEEE 754/C)是否保证以下代码断言永远不会失败? int main() { for ( /* all possible float / double values */ )
代码由Vue语言编写,使用Element-ui框架, 如果一个对象包含某些内容,则会显示该内容,如果不包含则禁用菜单按钮。 输出应该是这样的: a、b(禁用)、c、d、e 但我的是这样的: a、a(禁
如果我这样做: {{ morevalue }} {{ value }} v-else 中的跨度也会在第二个 V-FOR 上循环,即使它上面没有任何 v-for,为什么? 这是
如果我这样做: {{ morevalue }} {{ value }} v-else 中的跨度也会在第二个 V-FOR 上循环,即使它上面没有任何 v-for,为什么? 这是
我将 Vue.js 与 Vuetify 一起使用,我正在尝试使用 v-data-table 从后端加载菜单列表并使用 对其设置一些权限v-switches 但我在尝试 v-model 数组时遇到问题:
我在 Java 的流式操作中努力维护我想要的数据结构,这很可能是由于缺乏正确的理解和实践。 public class Main { public static void main(String
我正在尝试为匹配中的每个匹配呈现一些 HTML,但是,我不太确定 实际上是正确的。 更具体地说,我不确定我是否可以使用 v-bind:match='match'在与循环相同的元素上 v-for='ma
所以我想知道为什么这个 v-if 和 v-else 语句不起作用,为什么我要以不同的方式解决它。 代码如下 Required: Select a Workflow {{ isChain ?
我有一个 VueJS 组件 ,我在同一个模板中使用了两次来显示两组不同的数据。每个都显示在自己的 使用 v-if 切换的容器在导航选项卡上。 似乎这些组件被实例化为同一个实例。我调用 console
我是一名优秀的程序员,十分优秀!