我试图让 Laravel 5.4 使用 LDAP 而不是传统的数据库方法对用户进行身份验证。
已经有一个库,Adldap2/Adldap2-Laravel。问题是这个库:
这在我的情况下不起作用,因为 LDAP 服务器中没有管理员,我 ?w?a?n?t? 必须连接到;只允许使用该应用程序的用户名,没有角色。
如已存在的问题所示,我LoginController使用以下代码修改了该类(出于测试目的,我试图连接到此网页中提供的服务器:在线 LDAP 测试服务器)。
protected function attemptLogin(Request $request) {
$conn_settings = config('adldap.connections')[config('adldap_auth.connection')]['connection_settings'];
$credentials = $request->only(config('adldap_auth.usernames.eloquent'), 'password');
$user_format = env('ADLDAP_USER_FORMAT', 'uid=%s,' . $conn_settings['base_dn']);
$userdn = sprintf($user_format, $credentials[config('adldap_auth.usernames.eloquent')]);
$pass = $credentials['password'];
if(Adldap::auth()->attempt($userdn, $pass, $bindAsUser = true)) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是,一旦使用正确的凭据登录,我就会被送回登录表单。当凭据错误时,我会收到相应的错误消息。
我的配置文件,以防万一:
.env:
ADLDAP_CONTROLLERS=ldap.forumsys.com
ADLDAP_BASEDN=dc=example,dc=com
ADLDAP_USER_FORMAT=uid=%s,dc=example,dc=com
Run Code Online (Sandbox Code Playgroud)
adldap_auth.php:
[
'connection' => env('ADLDAP_CONNECTION', …Run Code Online (Sandbox Code Playgroud) 我有一个受保护的 api,我得到了它的用户名和密码。当我使用 Postman 时,我选择了“Basic Auth”类型,在正文中我有用户登录信息等参数。它工作得很好。
但是,我正在尝试使用 Alamofire 做同样的事情,但我无法获得正确的 JSON 返回值。这是我所做的:
// user auth
let param = ["mobile":"3", "password":"100200"]
let urlStr = "http://MyApi.com/api/login"
let url = URL(string: urlStr)
// api auth
let user = "apiUserName"
let password = "ApiAuthPassword"
var headers: HTTPHeaders = ["mobile":"001",
"password":"1111"]
if let authorizationHeader = Request.authorizationHeader(user: user, password: password) {
headers[authorizationHeader.key] = authorizationHeader.value
}
Alamofire.request(url!, headers: headers)
.responseJSON { response in
print(response.result.value)
if let value: AnyObject = response.result.value as AnyObject? {
//Handle the results as JSON
print(value) …Run Code Online (Sandbox Code Playgroud) 我如何确定以下行在今天和未来版本的 Spring 中会返回什么?我没有找到有关此的文档。我怎样才能确定 Spring 决定分配给这个字段的内容是什么?
SecurityContextHolder.getContext().getAuthentication().getDetails()
Run Code Online (Sandbox Code Playgroud)
根据这个你可以期待西班牙宗教裁判所
我正在使用 NodeJS 和通行证让用户在看到他们刚刚参加的测验结果之前创建一个帐户。我的挑战是我需要在页面刷新之前确认用户名可用,因为如果发生这种情况,用户将丢失他们的结果。
再次:我需要在刷新之前验证用户名未被占用。
我想我很接近,但它不起作用。我将如何更改我的代码来应对这个挑战?
目前,如果用户名被占用,它会在尝试创建帐户时返回错误,并且用户最终会出现在 /failpage 上,如下所示。
app.post('/quiz', usernameToLowerCase, emailToLowerCase, function(req, res) {
User.findOne({
username: req.body.username
}, function(err, user) {
if (err) {
alert(err)
if (user) {
alert('this username is already taken. Please choose another.')
console.log('there was a user');
return false;
}
}
});
var user = new User({
username: req.body.username,
email: req.body.email,
password: req.body.password,
})
user.save(function(err) {
console.log('this is the problem' + ' ' + err)
if (err) {
return res.redirect('/failpage')
}
req.logIn(user, function(err) {
if (err) { …Run Code Online (Sandbox Code Playgroud) 我有一个使用 Hashicorp Vault 来存储用户名和密码秘密的应用程序。应用程序部署到云托管平台并传递令牌作为环境变量。在应用程序启动时,使用令牌从保管库中读取机密,并用于打开与远程服务的会话。远程服务的应用程序和会话是长期存在的。如果一切顺利,应用程序很少重新启动,因此很少从保管库中读取。当应用程序重新启动时,令牌可能已过期,从而导致失败。
是否有关于客户应如何使用保管库的最佳实践指南?令牌生命周期可以延长,但生命周期越长,安全性就越低。应用程序可以在每次需要时重新建立与远程服务的会话,但这将是低效的。有没有我不考虑的另一种选择?任何想法将不胜感激。
我已经在 .net core 2.0 web api 中设置了 openiddict,并使代码和密码流正常工作。我有测试用例来确保当请求者未经授权查找 401 状态代码时,API 中的锁定操作会被拒绝。
当这些测试运行时,响应是 404 not found 而不是 401,这使我的测试失败。我知道这条路线是正确的,因为它在允许匿名时返回 200。每当我尝试访问任何未经身份验证而锁定的操作时,我都会收到 404。当您尝试访问资源而不进行身份验证时,这是 openiddict 的默认状态吗?无论是从浏览器、邮递员还是测试用例运行,都会发生此行为。如何配置它以返回 401?我在下面提供了我的配置。
services.AddOpenIddict<int>(options =>
{
options.AddEntityFrameworkCoreStores<ApplicationContext>();
options.AddMvcBinders();
options.EnableAuthorizationEndpoint("/connect/authorize");
options.EnableTokenEndpoint("/connect/token");
options.AllowAuthorizationCodeFlow();
options.AllowPasswordFlow();
options.AllowRefreshTokenFlow();
options.RequireClientIdentification();
options.SetAccessTokenLifetime(TimeSpan.FromMinutes(1));
options.SetRefreshTokenLifetime(TimeSpan.FromMinutes(20160));
options.DisableHttpsRequirement();
});
services.AddAuthentication()
.AddFacebook(o => { o.ClientId = settings.FacebookAppID; o.ClientSecret = settings.FacebookAppSecret; })
.AddOAuthValidation();
Run Code Online (Sandbox Code Playgroud) authentication openid-connect openiddict asp.net-core-webapi
可能重复:
HTTP身份验证的类型以及如何设计安全数据库?
我有一个iphone应用程序,它与我的服务器交换XML数据.
用户第一次运行应用程序时,应用程序将连接到URL并请求用户ID.
我使用HTTP基本身份验证,但是通过一个简单的Web调试器(嗅探器),我能够看到发送/接收来自我的服务器的所有XML表单以及发出用户id的url.
那么我可以做些什么来隐藏所有这些数据而不是用调试器可见?有人建议使用https(http over ssl),但我看到数以百万计的网站/应用程序使用http来做这些事情.我错过了什么吗?我能做些什么才能拥有这种安全保障?
我想要的是避免有人制作脚本并用垃圾填充我的数据库,因为所有内容(URL,XML文件的形式)都是可见的.
我没有要发布的代码,因为这只是一个普遍的问题.
我目前有一个网站,我有身份验证设置.我有网站的成员,我将他们的凭据存储在数据库中.这完全没问题.常识适用于此,我知道我不应该将用户信息存储为纯文本.然而,当我研究的时候,我看到哈希字符串很容易做到.在整个开发过程中,我发现还有一种方法可以解密这些密码,从而引发了我的这个问题.只是哈希密码吗?我应该和它一起做某种加密吗?什么是最佳做法?我没有在网上找到任何好的信息......
string dec = FormsAuthentication.HashPasswordForStoringInConfigFile(Login1.Password, "SHA1");
提前感谢任何有用的输入.
我已经从我的服务器生成了 .p12 文件。但是现在我们正在开发 IOS 应用程序,需要 CA 来实现它。
我们正在使用 Amazon EC 负载均衡器服务器,所以我不知道在哪里可以获得 CA,.p12 是否也可以生成 CA?
在我的laravel项目中,我使用zizaco / entrust进行基于角色的身份验证。我有两个角色admin和user。现在我希望用户可以登录两个过程。laravel中正常登录系统的一个过程(运行良好),
当用户设置此url时,另一个过程使用诸如
http:// myproject / login?username = username&password = password之类的get方法,然后调用登录路径,以获取电子邮件和密码url的用户名和密码,并在匹配数据登录用户后成功。现在我要问的是,我该如何处理第二个进程从用户登录。我可以遵循任何技术吗?