我正在尝试创建一个应用程序,用户可以在其中管理其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
}
答案 0 :(得分:1)
在所有情况下授权流程中,您至少需要客户ID 。在某些情况下,您将需要更多类似客户端机密的文件。
您可以在https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-app-types
中了解有关OAuth授权的信息但是一般来说,您的目标是两种情况中的一种
您会很快注意到,在任何情况下您都需要拥有客户ID。这是因为Azure身份验证的工作原理。