首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在ASP.NET MVC中过期后刷新访问令牌

在ASP.NET MVC中过期后刷新访问令牌
EN

Stack Overflow用户
提问于 2021-10-18 03:33:24
回答 1查看 190关注 0票数 0

我正在使用Open ID connect混合流在ASP.NET MVC应用程序中获取访问令牌。并使用此访问令牌调用Power BI Rest API。但是,一旦访问令牌过期,REST API调用就会因为显而易见的原因而失败。

我的问题是,如何在不推送用户进行交互式登录的情况下获得新的访问令牌/刷新?

代码语言:javascript
运行
AI代码解释
复制
  public void ConfigureAuth(IAppBuilder app)
    {
        try
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
            app.UseCookieAuthentication(new CookieAuthenticationOptions());
            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = clientId,
                    Authority = authority,
                    PostLogoutRedirectUri = postLogoutRedirectUri,
                    RedirectUri = redirectUri,
                    UseTokenLifetime = false,
                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = context =>
                        {
                            context.HandleResponse();
                            context.Response.Redirect("/Error?message=" + context.Exception.Message);
                            return Task.FromResult(0);
                        },
                        AuthorizationCodeReceived = OnAuthorizationCodeCallback
                    }
                });

            app.UseStageMarker(PipelineStage.Authenticate);
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

    private static async Task OnAuthorizationCodeCallback(AuthorizationCodeReceivedNotification context)
    {
        var appConfidential = ConfidentialClientApplicationBuilder.Create(clientId)
                                             .WithRedirectUri(redirectUri)
                                             .WithClientSecret(clientSecret)
                                             .WithAuthority(authority)
                                             .Build();

        string powerBiPermissionApi = "https://analysis.windows.net/powerbi/api/";
        string[] ReadUserWorkspaces = new string[] {
            powerBiPermissionApi + "Workspace.Read.All",
            powerBiPermissionApi + "Report.Read.All",
            powerBiPermissionApi + "Dashboard.Read.All",
            powerBiPermissionApi + "Dataset.Read.All"
        };

        var authResult = await appConfidential.AcquireTokenByAuthorizationCode(ReadUserWorkspaces, context.Code).ExecuteAsync();
        ClaimsIdentity userClaims = context.AuthenticationTicket.Identity;
        userClaims.AddClaim(new Claim("Access_Token", authResult.AccessToken));
    }
EN

回答 1

Stack Overflow用户

发布于 2021-10-19 22:10:57

使用Azure Active Directory,我们可以为测量的天数指定自己的自定义超时/将会话长度与令牌有效性解耦。

我发现的一种方法是将会话持续时间与原始令牌的过期时间分开。通过向OIDC中间件提供以下选项,您可以告诉它停止在cookie中间件中控制此方面:

代码语言:javascript
运行
AI代码解释
复制
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions {
 ... 
UseTokenLifetime = false, 
 }
 );

如果UseTokenLifetime设置为false,cookie Middleware现在将遵循您在cookie Middleware参数中提供的任何设置。

或者,我们可以使用每5分钟更新一次的页面中的iFrame。

代码语言:javascript
运行
AI代码解释
复制
<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" id="refreshAuthenticationIframe" src="@Url.Action("CheckSessionTimeout", "Home", new { area = "" })" style="display:none;"></iframe>

您可以通过此Thread找到更多详细信息。

参考:

  1. Controlling a Web App’s session duration – CloudIdentity
  2. Solved: How to use Power BI Rest API without GUI authentic... - Microsoft Power BI Community
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69615320

复制
相关文章
Centos下添加用户到用户组
将一个用户添加到用户组中,千万不能直接用: usermod -G groupA
全栈程序员站长
2022/07/07
3.6K0
linux中vi和vim操作
vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能,因此被广泛使用
小小咸鱼YwY
2020/06/19
6.3K0
linux中vi和vim操作
linux中vi,vim操作技巧
配置vim /etc/vimrc配置项全局生效,对所有用户生效 .vimrc家目录下,只针对某个用户生效 > vim /etc/vimrc set number #显示行号 set autoindent #自动缩进 set nowarp #不换行 退出vim编辑器 保存退出 使用 Vim 编辑器保存并退出编辑状态是一件轻而易举的事,你只需记住按 ESC 键切换到正常模式,然后输入冒号(:),之后输入wq即可实现保存并退出。 > vim rumenz.txt 123 :wq 直接退出 如果
入门笔记
2022/06/02
4.6K0
linux中vi,vim操作技巧
原文链接:https://rumenz.com/rumenbiji/linux-vi-vim-skills.html
入门笔记
2021/10/12
2.6K0
linux 添加用户到sudo中
步骤 1. 先切到root用户 2. 执行visudo,其实就是修改/etc/sudoers 3. 添加用户,规则如下: youuser ALL=(ALL) ALL %youuser ALL=(ALL) ALL youuser ALL=(ALL) NOPASSWD: ALL %youuser ALL=(ALL)
千往
2018/01/24
4.1K0
Linux中vi与vim编辑操作
命令模式到编辑模式:插入命令i,附加命令a,打开命令o,修改命令c,取代命令r,替换命令s
CtrlX
2022/11/18
3.1K0
怎么退出vi编辑界面_centos保存退出vim
今天在虚拟机上练习如何自动挂载的时候,按照提示在命令行输入vi /etc/fstab,如下图:
全栈程序员站长
2022/11/11
7.3K0
怎么退出vi编辑界面_centos保存退出vim
Vi 和 Vim 的使用
Vi (Visual Interface)是 Linux下基于Shell 的文本编辑器,Vim (Visual Interface iMproved)是 Vi的增强版本,扩展了很多功能,比如对程序源文件的语法高亮。不管是 Vi 还是 Vim,我们习惯上都管它叫 Vi,但实际上用的更多的是 Vim。
Coding十日谈
2020/08/13
9410
Vi 和 Vim 的使用
Vim 和 Vi 的区别
第二次上 Linux 课的时候老师用到了 Vi 编辑器,然后提到了 Vim 但是没有用,于是我很疑惑二者的关系,发讨论问了一下同学,有人说 Vim 是 Vi 的爸爸。
wsuo
2020/07/31
9890
vi,vim的使用方法
Linux中已经广泛集成vi或者vim文件编辑器,在使用终端的过程中,经常要编辑文件,那么必然要用到vi,vim.
laoknas网络技术
2021/07/14
4180
linux vim dd命令_vim命令和vi的区别
Vim是从vi发展而来的文本编辑器,可以用颜色或底线等方式来显示一些特殊的信息。Vim是Linux中必不可少的工具,搭建网站修改配置文件时经常用到。本教程介绍Vim的模式和常用操作。
全栈程序员站长
2022/11/08
4.8K0
linux之vi,vim命令
表示当前行的下一行的行尾b按照单词向前移动 字首e按照单词向后移动 字尾w按照单词向后移至次一个字首H移动到屏幕最上 非空白字M移动到屏幕中央 非空白字L移动到屏幕最下 非空白字G移动到文档最后一行gg移动到文档第一行v进入光标模式,配合移动键选中多行Ctrl+f向下翻页Ctrl+b向上翻页u撤销上一次操作``回到上次编辑的位置dw删除这个单词后面的内容dd删除光标当前行dG删除光标后的全部文字d$删除本行光标后面的内容d0删除本行光标前面的内容y复制当前行,会复制换行符yy复制当前行的内容yyp复制当前行到下一行,此复制不会放到剪切板中nyy复制当前开始的 n 行p,P,.粘贴ddp当前行和下一行互换位置J合并行Ctrl+r重复上一次动作Ctrl+z暂停并退出ZZ保存离开xp交换字符后面的交换到前面~更换当前光标位置的大小写,并光标移动到本行右一个位置,直到无法移动
入门笔记
2022/06/02
21.8K0
为centos添加EPEL Repo
centos默认的源软件不是很全,大部分时候需要添加EPEL源。 centos5.x wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm centos6.x wget
happy123.me
2018/06/04
5.1K0
Linux-vi和vim
Vi是unix/linux操作系统中最经典的文本编辑器,只能是编辑字符,不能对字体、段落进行排版;它既可以新建文件,也可以编辑文件;它没有菜单,只有命令,且命令繁多,vi适用于文本编辑。 Vim是从 Vi 发展出来的一个文本编辑器,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计代码补全、编译及错误跳转等方便编程的功能特别丰富,vim适用于coding。
唔仄lo咚锵
2021/09/14
7.9K0
Linux-vi和vim
编辑器-vi、vim的使用
vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
狼啸风云
2019/10/28
1.4K0
编辑器-vi、vim的使用
Linux的vi命令用法大全_vim命令和vi的区别
大家好,又见面了,我是你们的朋友全栈君。 linux下使用vi编辑是很方便的,但是具体要怎么做呢?下面由学习啦小编为大家整理了linux下vi的相关命令,希望对大家有帮助! 1.linux vi命令的
全栈程序员站长
2022/11/09
2.7K0
解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim
3. 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
微风-- 轻许--
2022/04/13
1.7K0
解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim
linux 之 vi,vim 命令
原文链接:https://rumenz.com/rumenbiji/linux-vi-vim.html
入门笔记
2021/10/11
7K0
为vim编辑器添加默认的作者信息
上周五Derek老师分享了精彩的Vim思维导图(回复公众号vim即可查看哦),今天又带来什么呢?继续往下看吧! 很多程序员都想给自己的程序添加一些作者信息之类的信息,那么我们应该怎么实现这个要求呐? 只需要在VIM编辑器中添加以下代码即可! #为F4添加作者信息 map <F4> ms:call TitleDet()<cr>'s function AddTitle() call append(0,"##############################################")
小小科
2018/05/03
6350
《vi和vim》 学习手记(1)
O`Reilly 系列图书,广受好评,我也特地买了其中的几本,望有所收获。 第一部分  基础与高级的vi 行编辑器:ed 或 ex 全屏编辑器:vi 或 emacs UNIX分 商用系统 以及 源代码可用的相似系统。 商用系统包括 Solaris AIX HP-UX 相似系统:gnu/linux    bsd衍生系统 i : 插入 cw 更改字词 vi命令特点: 字母大小写有区别 输入时不会显示在屏幕上 不需要在命令后加上enter键 ZZ 保存成常规unix文件 ls 列出目录中的文件 :w 保存
用户1154259
2018/01/17
7760

相似问题

Nano vs Vim或Vi

10

如何覆盖vi / vim中的行文本?

20

使脚本从vi/vim中执行

20

粘贴vi / vim后的光标位置

40

vim/vi中tabn & tabp的快捷方式

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文