2 回答

TA貢獻1900條經(jīng)驗 獲得超5個贊
您問題中的功能是獲取服務(wù)主體的ID(位于門戶中),而不是屏幕截圖中的Enterprise applications
天藍色廣告應(yīng)用程序(位于) 。App registrations
似乎沒有這樣的函數(shù)可以objectid
通過您想要使用的屬性來獲取應(yīng)用程序的信息。(我對go不太熟悉,如果有什么錯誤,請指正。)最相似的是func (ApplicationsClient) Get
需要objectid
, 或 來func (ApplicationsClient) List
?列出應(yīng)用程序。

TA貢獻1934條經(jīng)驗 獲得超2個贊
我想你現(xiàn)在可能不需要這個,但以防萬一有人試圖做同樣的事情。下面是我目前的做法,但感覺超級老套(這就是為什么我試圖查找是否有人可以通過 MSGraph 或更優(yōu)雅的東西來實現(xiàn)它)。
它依賴于以下機制:
使用azure-sdk-for-go 的?模塊創(chuàng)建客戶端
azidentity
。所有客戶端類型都實現(xiàn) azcore 的TokenCredential
接口。這樣你就可以獲得客戶端的 JWT 令牌。使用客戶端獲取令牌,然后提取對象 ID (claim?
oid
)。您可以用來golang-jwt
執(zhí)行此操作。
以下是我如何將其組合在一起(警告:不完整且不安全):
? ? client, _:= azidentity.NewClientSecretCredential(tenantId, clientId, clientSecret,
? ? ? ? &azidentity.ClientSecretCredentialOptions{
? ? ? ? ? ? ClientOptions: azcore.ClientOptions{
? ? ? ? ? ? ? ? Cloud: cloud.AzurePublic,
? ? ? ? ? ? },
? ? ? ? })
? ? tokenString, _:= client.GetToken(context.Background(), policy.TokenRequestOptions{Scopes: []string{"https://management.azure.com/.default"}})
? ? type custom struct {
? ? ? ? ObjectId string `json:"oid"`
? ? ? ? jwt.StandardClaims
? ? }
? ? p := jwt.NewParser(jwt.WithoutClaimsValidation())
? ? c := &custom{}
? ? p.ParseUnverified(tokenString.Token, c)
? ? fmt.Println(c.ObjectId)
- 2 回答
- 0 關(guān)注
- 258 瀏覽
添加回答
舉報