首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C# MVC中从ADFS3.0端点获取Refresh_Token?

在C# MVC中从ADFS 3.0端点获取Refresh Token的步骤如下:

  1. 首先,确保你已经在项目中添加了对ADFS的引用。可以通过NuGet包管理器安装Microsoft.IdentityModel.Protocol.Extensions和Microsoft.IdentityModel.Tokens。
  2. 在Web.config文件中配置ADFS的相关设置。添加以下配置节:
代码语言:xml
复制
<configSections>
  <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<system.identityModel>
  <identityConfiguration>
    <audienceUris>
      <add value="https://your-app-url.com" />
    </audienceUris>
    <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
      <authority name="https://your-adfs-url/adfs/services/trust">
        <keys>
          <add thumbprint="your-adfs-thumbprint" />
        </keys>
        <validIssuers>
          <add name="https://your-adfs-url/adfs/services/trust" />
        </validIssuers>
      </authority>
    </issuerNameRegistry>
    <certificateValidation certificateValidationMode="None" />
    <securityTokenHandlers>
      <clear />
      <add type="System.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler, System.IdentityModel.Tokens.Saml2, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </securityTokenHandlers>
  </identityConfiguration>
</system.identityModel>

请注意替换以下值:

  • https://your-app-url.com:你的应用程序的URL。
  • https://your-adfs-url/adfs/services/trust:你的ADFS的URL。
  • your-adfs-thumbprint:你的ADFS的证书指纹。
  1. 在Controller中添加获取Refresh Token的代码。可以使用System.IdentityModel.Tokens命名空间中的类来实现。以下是一个示例代码:
代码语言:csharp
复制
using System.IdentityModel.Tokens;

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string adfsUrl = "https://your-adfs-url/adfs";
        string clientId = "your-client-id";
        string redirectUri = "https://your-app-url.com/callback";
        string resource = "your-resource";

        string authorizationEndpoint = $"{adfsUrl}/oauth2/authorize";
        string tokenEndpoint = $"{adfsUrl}/oauth2/token";

        string code = Request.QueryString["code"];

        if (!string.IsNullOrEmpty(code))
        {
            TokenClient tokenClient = new TokenClient(tokenEndpoint, clientId, "your-client-secret");
            TokenResponse tokenResponse = tokenClient.RequestAuthorizationCodeAsync(code, redirectUri).Result;

            string refreshToken = tokenResponse.RefreshToken;
            // 在这里可以将Refresh Token保存到数据库或其他持久化存储中

            // 其他处理逻辑...

            return View();
        }
        else
        {
            string authorizationUrl = new RequestUrl(authorizationEndpoint)
                .CreateAuthorizeUrl(clientId, "code", redirectUri, responseMode: "form_post", resource: resource);

            return Redirect(authorizationUrl);
        }
    }
}

请注意替换以下值:

  • https://your-adfs-url/adfs:你的ADFS的URL。
  • your-client-id:你的应用程序的客户端ID。
  • https://your-app-url.com/callback:你的应用程序的回调URL。
  • your-resource:你要访问的资源。

这段代码中,当用户访问首页时,如果没有收到授权码(code),则会重定向到ADFS的授权页面。用户完成授权后,会重定向回应用程序的回调URL,并携带授权码。应用程序使用授权码向ADFS的Token端点请求Refresh Token,并将其保存到适当的位置。

这是一个基本的示例,你可以根据自己的需求进行调整和扩展。关于ADFS的更多信息和详细配置,请参考ADFS文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

0开始构建一个Oauth2Server服务 发起认证请求

下次您该服务获取访问令牌时,完全有可能采用不同的格式。要记住的是,访问令牌对客户端是不透明的,应该只用于发出 API 请求而不是解释它们自己。...例如,Google 的 API 使用 OpenID Connect 提供一个 userinfo 端点,该端点可以返回有关给定访问令牌的用户的信息,或者您可以改为 ID 令牌获取用户信息。...我们在Signing in with Google完成了 userinfo 端点工作流程的完整示例。...要使用刷新令牌,请使用 向服务的令牌端点发出 POST 请求grant_type=refresh_token,并在需要时包括刷新令牌和客户端凭据。...这是最新的安全最佳当前实践的建议,它使授权服务器能够检测刷新令牌是否被盗。这对于没有客户端密钥的客户端尤其重要,因为刷新令牌成为获取新访问令牌所需的唯一东西。

13830

重磅!!!微软发布ASP.NET Core 2.2,先睹为快。

如何获取? 您可以.NET Core 2.2下载页面下载适用于您的开发机器和构建服务器的新.NET Core SDK(2.2.100)。...Visual Studio要求如下: Visual Studio版本2017年15.9或更高版本 Visual Studio for Mac 7.7或更高版本 Visual Studio Code C#...Core版本的主旨是在构建Web / HTTP API方面提高开发人员的工作效率和平台功能,详情请参考: 与流行的Open API(Swagger)库更好地集成,包括使用代码分析器进行设计时检查 引入端点路由...Checks API 由于进程内托管支持,IIS上的吞吐量提高了400% 高达15%的MVC模型验证性能得到改善 问题详细信息(RFC 7807)支持MVC获取详细的API错误结果 在ASP.NET...有关如何在Azure App Service中使用其他配置在64位进程运行ASP.NET Core应用程序的其他信息,请参阅此文章。

3.4K40

Spring Security 在 Spring Boot 中使用 OAuth2【分布式】

很多大公司 Google,Yahoo,Microsoft 等都提供了 OAuth 认证服务,这些都足以说明 OAuth 标准逐渐成为开放资源授权的标准。...在实际应用,可以用该字段来存储关于客户端的一些其他信息,客户端的国家、地区、注册时的 IP 地址等等 create_time 数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段...直接授权 1.2.3 oauth_client_token 字段名 描述 create_time 数据的创建时间,精确到秒,由数据库在插入数据时取当前系统时间自动生成(扩展字段) token_id 服务器端获取到的...1.5 测试 1.5.1 相关端点 端点 含义 /oauth/authorize 这个是授权的端点 /oauth/token 这个是用来获取令牌的端点 /oauth/confirm_access 用户确认授权提交的端点...1.5.6 刷新 token 获取 access_token 的同时,一般会同时返回 refresh_token,使用 refresh_token 进行刷新,刷新后旧的 token 将失效 ?

7K41

ASP.NET Core 2.2 正式版发布

怎么获取它 您可以 .NET Core 2.2 下载页面下载适用于您的开发机器和构建服务器的新 .NET Core SDK(2.2.100)。...Visual Studio要求如下: Visual Studio 2017 15.9 或者更高版本 Visual Studio for Mac 7.7 或者更高版本 Visual Studio Code C#...我们已将这些功能作为预览版本的一部分发布,您可以通过以下链接阅读这些功能: 与流行的Open API(Swagger)库更好地集成,包括使用代码分析器进行设计时检查 引入端点路由,在MVC中提高了20%...模型验证性能 问题详细信息(RFC 7807)支持MVC获取详细的API错误结果 在ASP.NET Core预览HTTP / 2服务器支持 Bootstrap 4和Angular 6的模板更新 ASP.NET...有关如何在Azure App Service中使用其他配置在64位进程运行ASP.NET Core应用程序的其他信息,请参阅此文章。

2K20

如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性

记录来自MVC的其他信息 就目前而言,ASP.NET Core的一个特征是许多行为被MVC“基础结构”锁定在了MVC框架内部来实现。端点路由是采用MVC功能并将其下移到核心框架的首要工作之一。...ASP.NET Core团队一直在努力将更多MVC特定功能(例如模型绑定或操作结果)MVC移除,然后“下推”到核心框架。...在这篇文章,我将展示如何在过滤器中使用IDiagnosticContext,以及将MVC特定值添加到日志。...我还将展示如何在page过滤器添加RazorPages特定的值(HandlerName)。 使用自定义过滤器记录MVC属性 过滤器相当于为每个请求运行的类似于MVC的微型中间件管道。....下一节让我们一起探讨下如何Serilog请求记录中排除运行状况检查端点

3.6K10

微信网页授权之使用完整服务解决方案

能力调整的内容和理由 微信团队给出的解释是当开发者在网页在不规范使用发起 snsapi_userinfo 网页授权时,微信将默认打开网页快照页模式进行基础浏览。...微信网页授权规范 授权流程需引导清晰、准确:在申请获取用户信息的弹窗出现前,应该清晰、准确地告知用户获取信息的范围及获取信息的目的; 必要场景申请:在必须获取用户信息时才申请,而不是用户尚未了解服务前就强制弹窗...使用医院挂号时才需要获取用户信息; 不强制登录:提供游客模式,供用户了解网页提供的基础服务,不强制用户允许网页获取用户信息后才能使用网页服务。...原有运行方案 微信OA2授权访问地址如下(示例url为C#字符串): https://open.weixin.qq.com/connect/oauth2/authorize?...&scope=snsapi_userinfo&state=1#wechat_redirect&connect_redirect = 1 重定向接收地址 OA2.ASPX程序 (C#

13610

在 Kubernetes 中使用 Keycloak OIDC Provider 对用户进行身份验证

本实验使用的配置文件可以在:https://github.com/cr7258/kubernetes-guide/tree/master/authentication/openid 获取。...6.5 查看端点信息 点击 Realm Settings -> General -> Endpoints 可以看到请求 project-1 这个 Realm 相关的端点信息,在后面的章节中将会用到这些信息...--oidc-username: JWT Claim 获取用户名的字段。 --oidc-username-claim:添加到 JWT Claim 的用户名前缀,用于避免与现有的用户名产生冲突。...client_secret 可以在 kubernetes 客户端的 Credentials 获取;请求的 URL 使用 6.5 查看端点信息章节中看到的 token_endpoint 的地址。...当运行 kubectl 命令时,kubelogin 会打开浏览器,用户需要输入用户名和密码登录程序,认证通过后,kubelogin 会认证服务器获取一个令牌,然后 kubectl 就可以使用该令牌和

6.1K20

收藏备用 | 关于OAuth2的一些常见问题总结

A:能不能返回给前端取决于这个前端是不是直接在授权服务器的OAuth2客户端,如果不是,就不能持有access_token和refresh_token,access_token和refresh_token...❝Q:非OAuth2客户端的客户端应用既然不能直接持有access_token和refresh_token的话,应该如何获取授权状态?...OAuth2客户端在完成授权时可以拿到授权凭据,但是并不能直接拿到用户信息,如果授权服务器提供了获取用户信息的资源接口,OAuth2客户端可以通过该接口尝试获取用户信息用来表明用户的身份,这取决于用户是否授权了...这样它们才能调用一些OAuth2规定的端点,比如/oauth2/token令牌端点、/oauth2/revoke令牌撤销端点等等。...在传统应用,用户习惯了把密码直接交给客户端换取资源访问权限,而不是跳来跳去去拉授权、确认授权。OAuth2诞生之初为了让用户传统思维慢慢转变过来就设计了这种模式。

57920

10个小技巧助您写出高性能的ASP.NET Core代码

阻塞调用或同步调用可以是任何东西,可以是API获取数据,也可以是执行一些内部操作。您应该始终以异步方式执行调用。...将数据保存在某个位置并让下次请求从这个地方获取数据而不是服务器获取是一种很好的做法。在这里,我们可以使用缓存。缓存内容有助于我们再次减少服务器调用,并帮助我们提高应用程序的性能。...尝试在数据库端过滤数据,不要使用查询获取整个数据,然后在您的末尾进行筛选。您可以使用EF Core的一些可用功能,可以帮助您在数据库端筛选数据的操作,:WHERE,Select等。...产品团队编写的代码(C#团队)通常是优化的、现代化的,并且遵循最佳实践。 使用经过优化和良好测试的API和库。...如果您正在使用ASP.NET Core MVC创建网站,下面是一些提示: 捆绑和小型化 使用捆绑和小型化可以减少服务器请求次数。尝试一次加载所有客户端资源,样式、js/css。

4.5K31

【Spring底层原理高级进阶】【SpringCloud整合Spring Security OAuth2】深入了解 Spring Security OAuth2:底层解析+使用方法+实战

令牌端点(Token Endpoint):客户端与授权服务器交互以获取或刷新令牌的API端点。 3.2 令牌(Token)的生成和验证: 在OAuth2,令牌是用于表示授权许可的凭证。...return accessToken; } // 验证访问令牌的示例代码 boolean validateAccessToken(String accessToken) { // 数据库或缓存获取访问令牌和过期时间...return isValid; } // 资源服务器验证访问令牌的示例代码 boolean validateToken(String accessToken) { // 数据库或缓存获取访问令牌和过期时间...客户端应采取适当的安全措施,存储令牌时进行加密处理。 在Spring Cloud,可以使用Spring Security OAuth2来实现令牌的保密性。...ID // 例如,请求头中获取请求参数获取 return request.getHeader("Client-Id"); } private boolean

90811

认证鉴权与API权限控制在微服务架构的设计与实现:授权码模式

客户端需要提交用于获取授权码的重定向地址 授权服务器对客户端进行身份验证,和认证授权码,确保接收到的重定向地址与第三步中用于的获取授权码的重定向地址相匹配。...登录成功,授权客户端获取授权码。 ? 授权之后,回调地址获取到授权码: 1http://localhost:8080/?code=7OglOJ 携带授权码获取对应的token: ? ?...DefaultTokenServices刷新token的refreshAccessToken()以及获取token的getAccessToken()方法就留给读者们自己去查看,在此不介绍。...小结 本文主要讲了授权码模式,在授权码模式需要用户登录之后进行授权才获取获取授权码,再携带授权码去向TokenEndpoint请求访问令牌,当然也可以在请求设置response_token=token...这里需要注意一个问题,在到达AuthorizationEndpoint端点时,并没有对客户端进行验证,但是必须要经过用户认证的请求才能被接受。

1.5K130

Oauth 2.0 详解

互联网很多服务Open API,很多大公司Google,Yahoo, Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。...客户端最终访问资源服务器获取资源信息。...2.授权模式(常用) 1、授权码模式(Authorization Code) USER-AGENT:浏览器 2、简化授权模式(Implicit) 提前获取访问令牌,但因为在Fragment无法访问...Resource Owner PasswordCredentials) 简化 4、客户端模式(Client Credentials) 5、刷新令牌 访问令牌过期后不用再重新走一遍流程,可通过刷新令牌授权服务器重新获取访问令牌...token_key 允许访问 .checkTokenAccess("permitAll()") // /oauth/check_token 允许访问 } 而这个/oauth/check_token端点可以获取

1.6K50

MVC 到使用 ASP.NET Core 6.0 的Minimal API

在这些示例,我使用的是 .NET 6.0 预览 7,为了提供公平和最新的并排比较,我还使用了最新的webapi模板,因为 MVC 还受益于 C# 10 的一些新特性,使事情变得更加“最小化”。...MVCMVC ,您可以将 JSON 请求正文绑定到 .NET 类型,方法是将其作为参数传递给您的操作方法并使用[FromBody]属性对其进行修饰: [HttpPost("/payments"...在某些情况下,您可能希望查询参数绑定复杂类型。我喜欢为具有多个过滤选项的搜索端点执行此操作。...MVCMVC,获得您的控制器时,ControllerBase您可以访问HttpContext,HttpRequest,HttpResponse和当前用户(ClaimsPrincipal基类属性...过滤器管道如何您的应用程序删除重复的一个很好的例子。

7.5K10
领券