登录
首页 >  Golang >  Go问答

无需客户端 ID 和客户端密钥即可对 Azure 应用程序资源管理进行授权

来源:stackoverflow

时间:2024-04-09 11:36:33 332浏览 收藏

今天golang学习网给大家带来了《无需客户端 ID 和客户端密钥即可对 Azure 应用程序资源管理进行授权》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我正在尝试创建一个应用程序,用户可以在其中管理其 azure 资源(sql 数据库、存储)。如何在不需要用户的客户端 id 和客户端密码的情况下授权用户。

我查看了他们的文档:https://godoc.org/github.com/azure/go-autorest/autorest/azure/auth,但是它们都需要环境变量和/或 clientid/clientsecret。有没有一种方法可以让用户提供用户名/密码,然后我可以找回授权人

type Client struct {
    ServersClient postgresql.ServersClient
}

func NewCloudClient() *Client {
    return &Client{}
}

func (c *Client) Init(config map[string]string) error {
    var (
        subscriptionID = config["subscriptionID"]
        // tenantID       = config["tenantID"]
        // clientID       = config["clientID"]
        // clientSecret   = config["clientSecret"]
        // resourceGroup  = config["resourceGroup"]
    )
    // oauthConfig, err := adal.NewOAuthConfig(azure.PublicCloud.ActiveDirectoryEndpoint, tenantID)
    // if err != nil {
    //  return errors.Wrap(err, "error getting OAuthConfig")
    // }
    // spt, err := adal.NewServicePrincipalToken(*oauthConfig, clientID, clientSecret, resourceGroup)
    serversClient := postgresql.NewServersClient(subscriptionID)

    //serversClient.BaseClient.Authorizer = autorest.NewBearerAuthorizer(spt)
    c.ServersClient = serversClient
    return nil
}

解决方案


在授权流程的所有情况中,您至少需要客户端 ID。在某些情况下,您将需要更多信息,例如客户端密钥

您可以在此处阅读有关 OAuth 授权的信息 https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-app-types

但一般来说,您的目标是两种情况之一

  1. 授权为用户,无需使用用户名和密码进行交互(这将是客户端资源所有者流程
  2. 授权用户进行交互

您很快就会注意到,在所有情况下您都需要拥有客户端 ID。这是因为 Azure 身份验证的工作原理。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>