我正在寻找一个JS加密库(类似于OpenSSL的libcrypto),它有助于在浏览器中对数据进行数字签名.
我想使用私钥(RSA,PKI证书或类似代码)在客户端签署表单表单数据.
例
signature=RSA_encrypt(A_private_key, hash(data))表单数据和签名被发送到服务器并存储
另一位用户(B)可以通过比较检查签名的有效性hash(data)与RSA_decrypt(A_public_key, signature)如果有人改变表单数据的签名将不再有效.
编辑
https://developer.mozilla.org/en/javascript_crypto
http://www.hanewin.net/encrypt
http://tomas.styblo.name/cryptoapplet/
VIA APPLETS
使用用户证书以Web表单签署数据的最佳方式
!=> http://www.nakov.com/research/documents-signing/digital-document-signing-in-java-based-web-applications/
http://www.nakov.com/research/documents-signing/
http://www.developer.com/java/other/article.php/10936_3587361_1
http://www.developer.com/java/web/article.php/3083161
http://blogs.nologin.es/rickyepoderi/的index.php?/archives/12-Signature-Applet.html
相关
http://ccff02.minfin.fgov.be/CCFF_Authentication/views/login/signature/signatureHelp.html
http://msdn.microsoft.com/en-us/library/cc778518%28VS.85%29.aspx
我有一个像这样的字符串:
a;b;c;d;e
f;g;h;i;j
1;2;3;4;5
Run Code Online (Sandbox Code Playgroud)
我想逐个元素地解析它.我使用嵌套的strtok函数,但它只是拆分第一行并使令牌指针为null.我怎么能克服这个?这是代码:
token = strtok(str, "\n");
while(token != NULL && *token != EOF)
{
char a[128], b[128];
strcpy(a,token);
strcpy(b,a);
printf("a:%s\n",a);
char *token2 = strtok(a,";");
while(token2 != NULL)
{
printf("token2 %s\n",token2);
token2 = strtok(NULL,";");
}
strcpy(token,b);
token = strtok(NULL, "\n");
if(token == NULL)
{
printf("its null");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
token 2 a
token 2 b
token 2 c
token 2 d
token 2 e
Run Code Online (Sandbox Code Playgroud) 由于我不熟悉弹性搜索,我无法识别ngram令牌过滤器和 边缘ngram令牌过滤器之间的区别.
处理令牌时这两者如何相互不同?
我有一个需要与Dynamic CRM 365 Web API对话的Web应用程序.动态CRM在ADFS上配置为依赖方.服务器是Windows Server 2016,一切都是内部部署,而不是Azure.
我为获取有效令牌所做的工作如下:
1)在ADFS中,转到应用程序组并添加新的服务器应用程序,获取ClientID并为我的Web应用程序生成客户机密钥.
2)在Active Directory中添加新的用户webAppUser
3)在CRM中使用应用程序ID 将此用户添加为应用程序用户 ID,这是我在将Web应用程序注册到ADFS时之前获得的ClientID.还创建了一个具有实体帐户完全权限的新角色,并将此角色分配给此应用程序用户
4)我正在使用以下代码来检索承载令牌并将其添加到我的HttpClient Authorization标头中.
public class CrmWebApiClient
{
private HttpClient _httpClient;
public CrmWebApiClient()
{
_httpClient = new HttpClient();
_httpClient.BaseAddress = new Uri("https://crmbaseaddress.com");
}
internal async Task Initialize()
{
try
{
var authority = "https://adfsServerUrl/adfs/";
var authContext = new AuthenticationContext(authority,false);
var credentials = new ClientCredential(clientID,clientSecret);
var authResult = await authContext.AcquireTokenAsync("https://crmbaseaddress.com", credentials);
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
}
catch (Exception ex)
{
var error = ex;
} …Run Code Online (Sandbox Code Playgroud) 假设我的用户登录了,我给了他 2 个令牌;访问和刷新令牌
访问令牌的有效期为 15 分钟,刷新令牌的有效期为 1 周
我们不想只给他们长期有效的访问令牌,因为有人可以获得该访问令牌并用它发出请求,这就是我们将其有效期设置为 15 分钟的原因。
但是,我们的刷新令牌不会也被盗吗?有人可以获得我们的刷新令牌并获得 1 周的访问权限吗?那么,如果两个不同的令牌都面临危险,为什么我们要提供两个不同的令牌并实施基于访问刷新的令牌身份验证呢?
你如何将一个字符串例如"a:b:c:d"拆分成令牌以便在Perl中解析?
(例如使用拆分?)
首先寻找清晰,直截了当的答案(但之后添加任何有趣的信息花絮).
我已经使用设计创建了一个用户模型,但我现在想添加对token_authenticable的支持,所以我需要迁移这些添加.以下是否正确,token_authenticatable应该是什么类型?
class AddAuthenticationTokenToUser < ActiveRecord::Migration
def change
add_column :users, :token_authenticatable
add_index :users, :authentication_token, :unique => true
end
end
Run Code Online (Sandbox Code Playgroud) 如何OPTIONS在针对跨域API 的请求中添加标头?
我正在使用的API要求Authorization在所有请求中将JWT令牌设置为标头.
当我尝试访问API Angular时,首先执行一个OPTIONS不关心我为"真实"请求设置的标头的请求,如下所示:
this._headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer my-token-here'
});
return this._http
.post(AppConfig.apiUrl + 'auth/logout', params, {headers: this._headers})
...
...
Run Code Online (Sandbox Code Playgroud)
当没有提供令牌时,API返回HTTP状态401,Angular认为OPTIONS请求失败.
我从很多程序员那里听到,strtok的使用可能会在不久的将来被弃用.有人说它还在.为什么这是一个糟糕的选择?strtok()在标记给定字符串时效果很好.它是否必须对时间和空间的复杂性做任何事情?我在互联网上找到的最佳链接就是这个.但这似乎并没有解决我的好奇心.如果可能,建议任何替代方案.
我正在考虑使用JWT.在jwt.io示例中,我在有效负载数据中看到以下信息:
"admin": true
Run Code Online (Sandbox Code Playgroud)
管理员可以被视为一个角色,因此我的问题.将令牌有效负载中的角色设置为习惯/良好实践吗?鉴于可以动态修改角色,我很有疑问.