簡體   English   中英

如何使用 oauth2 令牌在 MS Graph SDK 中進行身份驗證?

[英]How to authenticate in MS Graph SDK with oauth2 token?

我使用常規工作流程通過 golang.org/x/oauth2 獲取了 oauth2 令牌,但無法驗證圖 sdk (github.com/microsoftgraph/msgraph-sdk-go)。 我的應用程序允許多租戶 AD 和個人帳戶。

我實現azcore.TokenCredential接口:

type azureTokenCredential struct {
    token oauth2.Token
}

func (c azureTokenCredential) GetToken(_ context.Context, _ policy.TokenRequestOptions) (*azcore.AccessToken, error) {
    return &azcore.AccessToken{
        Token:     c.token.AccessToken,
        ExpiresOn: c.token.Expiry,
    }, nil
}

這就是我使用它的方式:

cred := azureTokenCredential{token: token}
auth, err := a.NewAzureIdentityAuthenticationProvider(cred)
if err != nil {
    return "", errors.WithStack(err)
}
adapter, err := msgraphsdk.NewGraphRequestAdapter(auth)
if err != nil {
    return "", errors.WithStack(err)
}
client := msgraphsdk.NewGraphServiceClient(adapter)
u, err := client.Me().Get(nil)

使用 AD 帳戶登錄時出現以下錯誤:

服務器返回了意外的狀態代碼,並且沒有為此代碼注冊錯誤工廠:401

通過將 oauth2 配置中的 scope 更改為https://graph.microsoft.com/.default來修復。 現在,當用戶登錄時,它會看到一個同意屏幕。 我還從我的應用程序注冊頁面的 API 權限屏幕添加了必要的 Microsoft Graph 權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM