我想使用go-cfclient库连接到Cloud Foundry并检查应用程序服务等。
在代码中使用我的用户密码显式时,我能够连接Java / Node / Go。
现在我想使用令牌模拟场景,即使用我的用户令牌来模拟连接,而不是使用我的密码。
我怎样才能实现这种模拟?
在go-cfclient或Node中优选。
更新
我需要一个带有CF令牌的E2E实际示例,其中用户使用一些示例UI并且可能在第一次提供一些凭据,但所有后续请求仅应使用CF令牌。
我在Golang中需要这个例子。
您可以从以下链接中找到CF的典型OAuth2令牌处理序列。要将此令牌用于其他API调用,您还可以参考其他测试用例。
无论如何,它是一个OAuth2令牌,在其到期后过期。如果您未在有效期内刷新,则无法避免使用user / pass登录。
更新
您已经说过可以使用用户名和密码登录,因此您需要做的只是获取带有API调用的令牌。就像是:
c := &Config{
ApiAddress: myApiAddress,
Username: "foo",
Password: "bar",
}
client, err1 := NewClient(c)
if err1 != nil {
// error handling for connection failure
}
// you already reach here. right?
token, err2 := client.GetToken()
if err2 != nil {
// error handling for token retreive failure
}
// just do what you want with token
你可以通过检查来源找到引擎盖下发生的事情:https://github.com/cloudfoundry-community/go-cfclient/blob/a0a191bdc19a7a7189c050444aeaf20d2a125875/client.go#L375
有关更多信息,请尝试打印出client
结构:
fmt.Printf("client: %v\n", client)
然后我想你可以找到更多信息。
我总是喜欢用Wrapper-Script
或Powershell
脚本语言编写Bash
您的CF-CLI
会在~\.cf\config.json
下留下所有登录信息,并且使用脚本语言阅读这些信息非常简单,并且不需要高编程工作量。
就我而言,我用它在不同的基础之间切换。我的Powershell脚本将使用此命令./cfwrapper switch
执行
Function SwitchFoundation () {
Write-Host 'Which Foundation You would like to Switch ??'`n
$foundationNumber = FoundationPrompt
$foundationIndex = $foundationNumber-1
$foundations = $foundationsJsonSettings
$foundation = $foundations[$foundationIndex]
if ($foundation -ne $null) {
if (Test-Path $configPath$foundationNumber) {
Write-Host 'You are now getting Switched to another Foundation. Please wait for a moment'`n
CopyConfig ($foundationNumber) ('reverse')
cf target
}else {
Write-Host 'Your login to this Foundation is not found. Kindly do a Fresh login below'`n
CFLoginSSOCommand ($foundationNumber) ($foundation.api_url)
}
} else {
Write-Host 'Foundation Number is wrong. Please retry..'
}
}
Function CFLoginSSOCommand ($foundationNumber,$apiUrl) {
Write-Host 'Logout command will be executed blankly to flush out all your current Logins'
cf logout
cf login --sso -a $apiUrl
CopyConfig($foundationNumber)
}
Function CopyConfig($foundationNumber, $flag) {
Write-Host 'Copying Config Path'
if ($flag -eq 'reverse') {
Copy-Item -Path $configPath$foundationNumber -Destination $configPath
}else {
Copy-Item -Path $configPath -Destination $configPath$foundationNumber
}
}
简而言之,CF-CLI已经获得了所有必要的命令。我们所需要的只是在它周围编写一个简单的包装器。