gpt4 book ai didi

c# - OAuth 不记名 token 认证授权码

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:41 24 4
gpt4 key购买 nike

目前,我们的 ASP.NET MVC 系统使用 OpenIdConnect 和 cookie 身份验证进行保护。我们已经使用 Azure 事件目录启用了 oauth 身份验证流程。

    public void ConfigureAuthOpenIdConnect(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

var cookieAuthenticationOptions = new CookieAuthenticationOptions()
{
//...
};

app.UseCookieAuthentication(cookieAuthenticationOptions);

var notifications = new OAOpenIdConnectAuthenticationNotifications();
var openIdConnectAuthenticationOptions = new OpenIdConnectAuthenticationOptions()
{
//...
Notifications = notifications
};

app.UseOpenIdConnectAuthentication(openIdConnectAuthenticationOptions);

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigHelper.ClientSettings.TenantName,
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigHelper.ClientSettings.ClientId
}
});
}

现在,当我们通过 OpenIdConnect 进行身份验证时,我们使用 OpenIdConnectAuthenticationOptions 选项上的自定义 Notifications 检索授权代码,这使我们能够使用 ADAL 请求和缓存资源 token 。

当有人尝试使用 azure AD 持有者 token 访问我们的系统时会出现问题,但获取和缓存资源 token 的工作流程不存在。

所以我的问题是,如何使用不记名 token 启用它?我如何请求额外的资源 token ,就像我们使用 OpenIdConnect 所做的那样?是否可以使用 ADAL 从不记名 token 中获取授权码?

最佳答案

如您所述,您正在使用 OpenID Connect ASP.NET 中间件和 ADAL .NET 来使用 Azure AD 进行登录,然后在 OnAuthorizationCodeReceived 中以已登录用户的身份调用 Web API OpenID 连接通知。

在这种情况下,您可以使用授权代码将其交换为特定资源的访问 token 。

另一方面,当客户端应用程序使用 azure AD 承载 token 访问您的系统时,没有授权代码。在这种情况下,如果您想使用该访问 token 将其交换为另一个资源的访问 token ,例如 Microsoft Graph,您可以使用 OAuth 2.0 On-Behalf-Of flow . OAuth 2.0 On-Behalf-Of 流程服务于应用程序调用服务/Web API,而后者又需要调用另一个服务/Web API 的用例。

有关协议(protocol)在这种情况下如何工作的更多信息,请参阅 Authentication Scenarios for Azure ADOn-Behalf-Of flow tutorial . 当然,您可以使用 ADAL.NET 执行 On-Behalf-Of 流程,请参阅 this code sample .

关于c# - OAuth 不记名 token 认证授权码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45948827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com