使用Javascript将objectGuid转换为UUID字符串

时间:2019-07-13 12:48:34

标签: active-directory ping uuid ldapjs

我一直在寻找一种方法,可以将ObjectGuid转换为Active Directory,这是一种特殊类型,可以使用ldapjs之类的库将其转换为字符串,这看起来很奇怪,或者使用ping federate将其添加为声明。以下是一个示例:

const ldapjs = require("ldapjs");
let _client = ldapjs.createClient({
        "url": this._ldap_uri
      });
_client.search(this._search_dn, opts, (error, res) => {
          res.on("searchEntry", (entry) => {
              console.log(entry.object.objectGUID)
          }

这是ldapjs的输出示例。当您将其作为声明添加到ping联盟时,会出现同样的情况。

H�Y��fB�_-_���

但是,这等效于有效的UUID。

b9****48-6***-42**-a**f-2d5f*****40b

我想做的是将这个奇怪的值转换为正确的UUID。我已经搜索并测试了一些不同的帖子和网站,但没有找到有效的解决方案。

以下是我研究过的一些内容:

如果有人对此有解决方案,将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用此代码的实验(阅读GUID):

String.prototype.padLeft = function( len, str ) {
        //return Array( len - String(this).length + 1 ).join(str) + this;
        var s = this;
        str = str || '0';
        if ( str.length > 0 ) {
            while ( s.length < len ) {
                s = ( str + s );
            };
        }
        return s;
    }

var destAD = GetObject("LDAP://dc.yourdomain.pl/cn=Administrator,cn=Users,dc=yourdomain,dc=pl");
var guidValueArr = destAD.Get("objectguid").toArray();
var guid = "", i;
for ( i = 0; i < guidValueArr.length; i ++ ) {
    guid += guidValueArr[i].toString(16).padLeft(2,"0");
}
var guidFormated = guid.replace(/(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})(.{4})(.{12})/, "$4$3$2$1-$6$5-$8$7-$9-$10");
alert( guidFormated );

Universally unique identifier