我在尝试在 iControl REST API 上使用远程身份验证时遇到问题。
我尝试使用以下文章配置远程身份验证配置远程用户身份验证和授权并尝试使用以下方式进行 REST API 调用本文。
以下句子让我感到困惑:
“如果您正在使用外部身份验证提供商,请从系统管理员处获取登录参考。”
我不确定在哪里可以获取登录参考。当我尝试创建没有登录参考的身份验证令牌时,它可以工作,但当我尝试使用响应中的令牌时,我收到 401 响应。
我还在这个网站上找到了一个“解决方法”,听起来也有点儿不靠谱。我无法发布链接,因为我没有 10 个声誉点。
有人能确认该问题已在 v12 中修复吗?是否有人尝试过使用 iControl REST API 进行远程身份验证?如果是这样,您对配置和使用方法有什么建议吗?
我也在 f5 网站上问过同样的问题,但还没有收到答复。我还忘了说我可以使用 Web 控制台和 Putty 使用外部帐户登录设备。
任何帮助,将不胜感激。
谢谢
答案1
URL: https://172.16.44.15/mgmt/shared/authn/login
Method: POST
Headers: Content-Type: application/json
Payload: {
"username": "remote_user_name",
"password": "remote_user_password",
"loginProviderName": "tmos"
}
您将获得一个令牌,然后将其作为 X-F5-AUTH-TOKEN 标头中的值放置。
答案2
针对 LDAP 进行身份验证很令人困惑。您必须传递 Basic auth 标头以及 tmos 令牌信息。
if($f5Creds -eq $null)
{
$f5Creds = Get-Credential
}
$base64EncodedAuth = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(('{0}:{1}' -f $f5Creds.UserName, $f5Creds.GetNetworkCredential().Password)))
$reqHeaders = @{
"Content-Type" = "application/json"
"Authorization" = "Basic {0}" -f $base64EncodedAuth
}
$f5Host = '<f5 hostname or IP>'
$f5BaseUri = 'https://{0}/mgmt' -f $f5Host
$f5AuthUri = '{0}/shared/authn/login' -f $f5BaseUri
$f5AuthBody = @{
"username" = $f5Creds.UserName
"password" = $f5Creds.GetNetworkCredential().Password
"loginProviderName" = "tmos"
} | ConvertTo-Json
$f5AuthToken = Invoke-RestMethod -Uri $f5AuthUri -Method:Post -Headers $reqHeaders -Body $f5AuthBody