我的yarn.lock 文件中的一个依赖项存在问题。问题出在 ldapjs 上,最新版本有一个关于用户或密码中特殊字符的错误,所以我想将其冻结在最新的工作版本 1.0.2 中。
当我将代码提交到 master 分支时,构建该项目的步骤开始失败,说出标题的消息。
这是我的 dockerfile
FROM repository/node-oracle:10.15.3
LABEL maintainer="Me"
RUN yarn cache clean
# Add Tini
ENV TINI_VERSION v0.18.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /usr/src/auth
COPY . .
RUN yarn install --frozen-lockfile --non-interactive --silent
ENV PATH /usr/src/auth/node_modules/.bin:$PATH
EXPOSE 3000
CMD ["node", "./bin/www"]
Run Code Online (Sandbox Code Playgroud)
有什么办法可以让我完成这项工作吗?
另外作为额外信息,我能够在功能分支中通过此步骤运行管道,该消息在开发和主分支中启动。
[更新]
这些是在我的yarn.lock 文件中更新和冻结的依赖项
activedirectory@^0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/activedirectory/-/activedirectory-0.7.2.tgz#19286d10c6b24a98cc906dc638256191686fa91f"
integrity sha1-GShtEMaySpjMkG3GOCVhkWhvqR8=
dependencies:
async ">= 0.1.22"
bunyan ">= 1.3.5"
**ldapjs "=1.0.2"**
underscore ">= 1.4.3"
***ldapjs@1.0.2***:
version …Run Code Online (Sandbox Code Playgroud) continuous-integration node.js ldapjs yarnpkg yarn-lock.json
我正在使用 activedirectory npm 包对企业中的 activedirectory 进行身份验证。发现验证问题,而我之前在其他软件中已经多次这样做了。
var ActiveDirectory = require('activedirectory');
var config = { url: 'ldap://<ldap server>:389',
baseDN:'DC=ads,DC=dwdwdw,DC=com',
bindDN: 'CN=dddd,OU=ServiceAccounts,OU=Process,DC=ads,DC=dwdwdw,DC=com',
bindCredentials: 'vBAX5y5@',
includeMembership:['user'],
referrals: {
enabled: false,
excluded: [ ]
},
attributes: {
user: [ 'sAMAccountName' ],
group: [ 'distinguishedName' ]
},
//filter: '(&(objectcategory=person)(objectclass=user)(|(samaccountname={{username}})(mail={{mail}})))'
//filter: '(&(objectcategory=*)(|(samaccountname={{username}})))'
}
var sAMAccountName = 'sss';
var password = 'password';
var username = sAMAccountName;
ad.authenticate(sAMAccountName, password, function(err, auth) {
if (err) {
console.log('ERROR: '+JSON.stringify(err));
return;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此 nodejs 脚本时,出现以下错误:
错误:{“lde_message”:“80090308:LdapErr:DSID-0C09042F,评论:AcceptSecurityContext 错误,数据 52e,v2580\u0000”,“lde_dn”:null}
可以肯定地说,我不知道我在做什么。
但我知道 searchAttribute …
我在这里发布了类似的东西:使用带有承诺的ldapjs.不幸的是,它仍未解决.
这次我尝试了蓝鸟,希望我能得到一些运气.
// https://www.npmjs.com/package/ldapjs
var Promise = require('bluebird');
var ldap = Promise.promisifyAll( require('ldapjs') );
var config = require('./config');
var print_r = require('print_r').print_r;
var my_filter = "(&(objectCategory=person)(objectClass=user)" + "(cn=" + 'someone' + "))";
var ldap_username = config.ad.username;
var ldap_password = config.ad.password;
var ldap_url = config.ad.url;
var ldap_dn_search = config.ad.dn_search;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
ldap.Attribute.settings.guid_format = ldap.GUID_FORMAT_B;
var opts = {
filter: my_filter,
scope: 'sub',
};
//test
console.log(my_filter);
console.log(ldap_username);
console.log(ldap_password);
console.log(ldap_url);
console.log(ldap_dn_search);
/* NOTE: This code is working!!!
client.bind(ldap_username, ldap_password, function …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 LDAP 服务器对我的用户(从我的 RN 应用程序)进行身份验证(我已经找到一个尝试在此处进行身份验证,并且它有效!)。每次收到用户的凭据(用户名和密码)时,我都可以使用 Firebase 创建自定义令牌,并将其保存在 Firebase 实时数据库中。
主要问题是我不知道如何将我的应用程序与 LDAP 服务器连接,我调查并发现我必须安装openLDAP或ldapjs之类的东西,但我不明白如何进行身份验证我的猜测是:
任何帮助或建议都会受到欢迎,谢谢:) 抱歉我的英语不好。
openldap ldapjs react-native firebase-authentication firebase-admin
我想将以下代码转换为使用 Promise。它正在工作并输出活动目录中的用户属性。
var client = ldap.createClient({
url: ldap_url
});
client.bind(ldap_username, ldap_password, function (err) {
client.search(ldap_dn_search, opts, function (err, search) {
search.on('searchEntry', function (entry) {
var user = entry.object;
// It is working!!!. It outputs all user attributes.
console.log(user);
});
});
});
Run Code Online (Sandbox Code Playgroud)
以下是我的尝试,但它没有输出任何内容。
var Promise = require('promise');
var client_bind = Promise.denodeify(client.bind);
var client_search = Promise.denodeify(client.search);
client_bind(ldap_username, ldap_password)
.then(function(err){
client_search(ldap_dn_search, opts)
.then(function(search){
var search_on = Promise.denodeify(search.on);
search_on('searchEntry')
.then(function(entry){
var user = entry.object;
// It doesn't output anything !!!
console.log(user);
});
});
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用“搜索”方法在 ldapjs 中进行搜索,但它对我不起作用。
这是来自终端的回应:
> Result is: SearchResponse {
messageID: 2,
protocolOp: 101,
controls: [],
log:
Logger {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
_isSimpleChild: true,
_level: 30,
streams: [ [Object] ],
serializers:
{ req: [Function: req],
res: [Function: res],
err: [Function: err] },
src: false,
fields:
{ name: 'ldapjs',
component: 'client',
hostname: 'nichita-Lenovo-ideapad-500-15ISK',
pid: 29307,
clazz: 'Client' } },
status: 0,
matchedDN: '',
errorMessage: '',
referrals: [],
connection:
TLSSocket {
_tlsOptions:
{ pipe: undefined,
secureContext: [Object],
isServer: …Run Code Online (Sandbox Code Playgroud) ldapjs ×6
node.js ×4
javascript ×3
promise ×2
bluebird ×1
ldap ×1
openldap ×1
react-native ×1
yarnpkg ×1