如何使用带有用户令牌E2E的CF客户端

问题描述 投票:8回答:2

我想使用go-cfclient库连接到Cloud Foundry并检查应用程序服务等。

在代码中使用我的用户密码显式时,我能够连接Java / Node / Go。

现在我想使用令牌模拟场景,即使用我的用户令牌来模拟连接,而不是使用我的密码。

我怎样才能实现这种模拟?

go-cfclient或Node中优选。

更新

我需要一个带有CF令牌的E2E实际示例,其中用户使用一些示例UI并且可能在第一次提供一些凭据,但所有后续请求仅应使用CF令牌。

我在Golang中需要这个例子。

go oauth ibm-cloud cloudfoundry pivotal-cloud-foundry
2个回答
2
投票

您可以从以下链接中找到CF的典型OAuth2令牌处理序列。要将此令牌用于其他API调用,您还可以参考其他测试用例。

https://github.com/cloudfoundry-community/go-cfclient/blob/a0a191bdc19a7a7189c050444aeaf20d2a125875/client_test.go#L117

无论如何,它是一个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)

然后我想你可以找到更多信息。


0
投票

我总是喜欢用Wrapper-ScriptPowershell脚本语言编写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已经获得了所有必要的命令。我们所需要的只是在它周围编写一个简单的包装器。

© www.soinside.com 2019 - 2024. All rights reserved.