如何使用 oauth2 令牌在 MS Graph SDK 中进行身份验证?
How to authenticate in MS Graph SDK with oauth2 token?
我通过 golang 使用通常的工作流程获取了 oauth2 令牌。org/x/oauth2 但无法验证 graph 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 帐户登录时出现以下错误:
The server returned an unexpected status code and no error factory is registered for this code: 401
已通过将 oauth2 配置中的范围更改为 https://graph.microsoft.com/.default
来修复。现在,当用户登录时,它会看到一个同意屏幕。我还从我的应用程序注册页面的 API 权限屏幕添加了必要的 Microsoft Graph 权限。
我通过 golang 使用通常的工作流程获取了 oauth2 令牌。org/x/oauth2 但无法验证 graph 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 帐户登录时出现以下错误:
The server returned an unexpected status code and no error factory is registered for this code: 401
已通过将 oauth2 配置中的范围更改为 https://graph.microsoft.com/.default
来修复。现在,当用户登录时,它会看到一个同意屏幕。我还从我的应用程序注册页面的 API 权限屏幕添加了必要的 Microsoft Graph 权限。