我一直在尝试使用SDK从已安装的链码中调用函数,但我遇到了一个问题,我正在努力解决这个问题。我构建的javascript程序是测试/集成/客户端的混合。js文件和fabcar/invoke。js。但是,当我运行脚本时,在运行事务建议时,我会遇到以下错误:
错误:[client-utils.js]: sendPeersProposal-Promise被拒绝:错误:未能反序列化创建者身份,错误提供的身份无效,Verify()返回x509:证书由未知机构签名
我知道我的问题是由于没有使用正确的证书,但我不知道我在哪里没有使用正确的证书。我使用以下脚本创建了crypto-config目录:
../src/github.com/hyperledger/fabric/build//bin/cryptogen generate --config=./crypto-config.yaml ../src/github.com/hyperledger/fabric/build//bin/configtxgen --profile OrdererGenesis -outputBlock ./channel-artifacts/genesis.block ../src/github.com/hyperledger/fabric/build//bin/configtxgen --profile Channel --outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME ../src/github.com/hyperledger/fabric/build//bin/configtxgen --profile Channel -outputAnchorPeersUpdate ./channel-artifacts/CorpMSPanchors.tx -channelID $CHANNEL_NAME -asOrg CorpMSP ../src/github.com/hyperledger/fabric/build//bin/configtxgen --profile Channel -outputAnchorPeersUpdate ./channel-artifacts/EngMSPanchors.tx -channelID $CHANNEL_NAME -asOrg EngMSP
下面是我添加同龄人和频道的代码:
let data = fs.readFileSync(network[org].peers['peer1']['tls_cacerts']); var peer = client.newPeer( network[org].peers['peer1'].requests, { pem: Buffer.from(data).toString(), 'ssl-target-name-override': network[org].peers['peer1']['server-hostname'] }); console.log("- Peer set up, setting up channel"); channel = client.newChannel(utils.getConfigSetting('channelName')); channel.addPeer(peer); data = fs.readFileSync(network.orderer['tls_cacerts']); channel.addOrderer(client.newOrderer(network.orderer['url']), { pem: Buffer.from(data).toString(), 'ssl-target-name-override': network.orderer['server-hostname'] }); target.push(peer);
这是我的网络配置:
{ "tmpdir": "/tmp/hfc_test_kvs", "channelName" : "mychannel", "chaincodeId" : "blockparty", "network-config": { "orderer": { "url": "grpcs://orderer.example.com:7050", "server-hostname": "orderer.example.com", "tls_cacerts": "./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" }, "org1": { "name": "Corp", "mspid": "CorpMSP", "username": "Admin", "peers": { "peer1": { "requests": "grpcs://peer0.corp.example.com:7051", "events": "grpcs://peer0.corp.example.com:7053", "server-hostname": "peer0.corp.example.com", "tls_cacerts": "./crypto-config/peerOrganizations/corp.example.com/peers/peer0.corp.example.com/tls/server.crt" }, "admin": { "key": "./crypto-config/peerOrganizations/corp.example.com/users/Admin@corp.example.com/msp/keystore", "cert": "./crypto-config/peerOrganizations/corp.example.com/users/Admin@corp.example.com/msp/signcerts" } },
根据要求,以下是我crypto-config.yaml的一些片段:
OrdererOrgs: - Name: Orderer Domain: example.com Specs: - Hostname: orderer PeerOrgs: - Name: Corp Domain: corp.example.com Specs: - Hostname: peer0 - Hostname: peer1 - Hostname: peer2 Users: Count: 1
还有我的电脑。亚马尔:
Profiles:
OrdererGenesis:
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Consortiums:
SampleConsortium:
Organizations:
- *Corp
- *Eng
Channel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *Corp
- *Eng
################################################################################
#
# Section: Organizations
#
# - This section defines the different organizational identities which will
# be referenced later in the configuration.
#
################################################################################
Organizations:
# SampleOrg defines an MSP using the sampleconfig. It should never be used
# in production but may be used as a template for other definitions
- &OrdererOrg
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: OrdererOrg
# ID to load the MSP definition as
ID: OrdererMSP
# MSPDir is the filesystem path which contains the MSP configuration
MSPDir: crypto-config/ordererOrganizations/example.com/msp
- &Corp
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: CorpMSP
# ID to load the MSP definition as
ID: CorpMSP
MSPDir: crypto-config/peerOrganizations/corp.example.com/msp
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication. Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.corp.example.com
Port: 7051
关于我应该使用哪种证书来正确提交交易提案,然后提交交易,有什么想法吗?我没有使用ca服务器,也没有使用docker容器。该环境的工作原理是,我可以使用对等链码调用
命令调用链码,因此我知道它可以工作,但我不确定应该在客户机中使用哪个证书。newPeer
和客户端。新频道
功能。
非常感谢你的阅读,伯特兰。
我认为您需要一个客户端管理员证书。最好由corp.example.com或对等方签名#。corp.example.com.corp.example.com的证书链已经存在于您的MSPDir/ca文件夹中。所以这应该可以解决问题。
我正在尝试创建一个委托身份验证提供程序来执行逻辑,然后根据一些任意逻辑决定选择哪个身份验证提供程序;为了这个例子,如果用户名以前缀开头。 我当前的SecurityConfig将一次尝试一个身份验证提供程序: 根据用户名,我想选择是否要使用try a provider,这样,如果用户名不是以特定前缀(“ldap”、“custom”、“ad”等)开头,它们就不会被调用...),所以: 我似乎无法以这种
我已经创建了身份提供程序,并且从浏览器中它工作正常。 参考:密钥斗篷身份提供程序后代理登录抛出错误 从浏览器,我可以使用外部IDP登录,如果外部IDP用户不在keycloak中,它会在keyclock中创建,这绝对没问题,并重定向到仪表板。 但我的问题是,我们如何用keycloak rest api实现这个流程? 是否有任何api用于使用外部IDP登录,并将获得外部IDP的令牌以及密钥斗篷的令牌?
我在调试身份验证问题时遇到了这个代码片段: 我在调试和摆弄用户凭证时注意到,如果第一个身份验证提供者(即< code > userdailsservice )无法对我的用户进行身份验证,那么就会远程调用我的LDAP服务器来尝试对我的用户进行身份验证。但是,如果第一个身份验证提供者成功地对我的用户进行了身份验证,则不会调用第二个身份验证提供者。 我的问题是,列出这些身份验证提供者的工作方式是否使得如
我正在尝试在Spring身份验证服务器(Spring Security)中配置多个身份验证提供程序(主要和次要) 根据“身份验证”方法留档: 返回:包含凭据的完全经过身份验证的对象。如果AuthenticationProvider无法支持对传递的身份验证对象的身份验证,则可能返回null。在这种情况下,将尝试下一个支持提供的身份验证类的AuthenticationProvider。 如果身份验证失
我有一个spring应用程序,我正试图通过第三方身份提供商使用单点登录进行设置。 我在测试中有这个功能,但当我将它移到prod时,它正在循环。 我的应用程序发送SAMLRequest,然后我输入用户名和密码。IdP将SAMLACK发送到https://example.com/saml/SSOendpoint。此时,它应该像测试中那样302重定向到我的登录控制器,但它最终循环返回并302'到IdP。
问题内容: 我的Web应用程序有多个身份验证管理器(一个用于API,一个用于WEB访问)。该api应该仅具有基本的身份验证服务- 通过spring安全标记进行配置,如下所示: 我无法内联身份验证提供程序,因为我希望它可以被子bean配置覆盖。 我的问题是我无法在security:authentication-provider元素上定义别名/ id以在身份验证管理器中引用它。有一个简单的解决方法吗?