首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure AD图形应用编程接口和WsFederation身份验证

Azure AD图形应用编程接口和WsFederation身份验证
EN

Stack Overflow用户
提问于 2015-06-18 10:52:32
回答 2查看 787关注 0票数 0

我正在尝试在托管在Azure上的MVC Web App中实现Azure AD Graph API。Azure AD设置正确,因为在去年年底/今年的某个时候更新之前的版本中,我去年能够使用Graph API。

我按照这里的说明https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet并使用更新后的代码。这两个项目之间的区别是我使用的是WsFed而不是OpenID,所以有些部分是不同的,即Startup.Auth.cs。下面是这个示例项目中的相关代码(参见here):

代码语言:javascript
运行
复制
Notifications = new OpenIdConnectAuthenticationNotifications()
{                      
    AuthorizationCodeReceived = (context) =>
    {
        var code = context.Code;
        ClientCredential credential = new ClientCredential(clientId, appKey);
        string userObjectID = context.AuthenticationTicket.Identity.FindFirst(
                "http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
        AuthenticationContext authContext = new AuthenticationContext(Authority, new NaiveSessionCache(userObjectID));
        AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
            code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);
        AuthenticationHelper.token = result.AccessToken;
        return Task.FromResult(0);
    }
}

但是,由于我的网站设置为您必须通过WS-Fed登录才能访问网站上的任何内容,因此我尝试在Startup.Auth.cs中获取令牌。这样我以后就可以简单地使用AcquireTokenSilent了。我使用这里的项目https://github.com/AzureADSamples/WebApp-WSFederation-DotNet来设置WS-Fed。

Startup.Auth.cs中的问题是我不能访问AuthorizationCodeReceived选项,只能访问SecurityTokenReceived和SecurityTokenValidated。这两种方法都不能很好地提供访问代码或任何可用于稍后在应用程序中查询Graph API的选项。我该怎么做呢?任何指导都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2015-06-19 05:28:01

不幸的是,WS-Federation协议没有任何客户端和访问令牌的概念-交易的唯一令牌是发送给您用于web登录的令牌,并且没有生成授权码。如果您需要调用Graph API,我强烈建议切换到OpenId连接(它使用上面报告的逻辑处理访问令牌获取)。如果您绝对不能从ws- need切换,则需要手动执行OAuth2流。在实践中,这意味着从https://github.com/AzureADSamples/WebApp-WebAPI-OAuth2-AppIdentity-DotNethttps://github.com/AzureADSamples/WebApp-WebAPI-OAuth2-UserIdentity-DotNet中提取代码并将其粘贴到您的应用程序之上。这不是一个非常清晰的任务,这就是为什么我坚持我的建议,利用OpenId连接提供的集成流。HTH V。

票数 0
EN

Stack Overflow用户

发布于 2017-02-28 22:21:00

我设法获得了一个Microsoft Graph访问令牌,使用以下方法:使用以下参数向应用程序的oauth2/token端点https://login.microsoftonline.com/{tenantId}/oauth2/token执行服务器端POST:

代码语言:javascript
运行
复制
grant_type=client_credentials
&client_id=<clientId>
&client_secret=<clientSecret>
&resource=https://graph.microsoft.com

在上面的示例中,<clientSecret>是通过Azure管理门户生成的有效应用程序密钥。

方法,如下所示:https://graph.microsoft.io/en-us/docs/authorization/app_only

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30905724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档