- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个.NET 4.6.2 Windows客户端应用程序,该应用程序需要从我们的本地ADFS服务器获取身份验证 token ,然后使用它来调用ASP.NET Core REST API。它的客户端名称,ID(GUID)和重定向URI已在ADFS中注册。我正在使用最新的ADAL(v3.13)库来简化身份验证。我正在尝试获取 token ,如ADAL示例代码所示:
AuthenticationContext authenticationContext = new AuthenticationContext("https://<adfs-sts-server>/<rest-api-host>", false);
var result = authenticationContext.AcquireTokenAsync(<rest-api-resource-uri>, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
AcquireTokenAsync
调用返回错误,说:基于浏览器的身份验证对话框未能完成。原因:服务器找不到与请求的URI(统一资源标识符)匹配的任何内容。
https://<adfs-sts-server>/<rest-api-host>
或<rest-api-resource-uri>
中的“请求的URI”? <rest-api-host>
或<rest-api-resource-uri>
,如果是的话,该怎么办? 最佳答案
使用Active Directory联合身份验证服务(ADFS)从Windows客户端为本地终结点提供身份验证
配置ADFS
配置ADFS分为2部分。
向ADFS注册客户端应用程序
ADFS必须能够识别请求用户身份验证的应用程序,无论它是服务,WPF应用程序,Web客户端还是Office加载项。我已经通用了,并添加了以下客户端,我们可以将其用于大多数C#请求;我们可能需要为Web客户端注册具有不同回调的新客户端。
使用多种工具之一为客户端ID生成GUID。
* CLIENT_ID和APP_NAME应该是唯一的。
*对于Web客户端,重定向URI是身份验证服务在对用户进行身份验证之后将重定向您的调用的位置。它应该是一个端点,您可以在其中处理 token 并继续您的客户端应用程序。重定向URI并未真正与富客户端/服务/加载项一起使用。
CLIENT_ID = 26E54EC9-7988-4DAE-A527-483A8A78B1C6
APP_NAME = Investplus
DESCRIPTION = Invest+ rich client suite
REDIRECT_URI = https://server/redirect-adfs.html
Add-AdfsClient -ClientId <CLIENT_ID> -Name <APP_NAME> -RedirectUri <REDIRECT_URI>
DISPLAY_NAME = "MyInvestApi" (Unique display name for this Relying party)
PROFILE = "AD FS Profile"
ENABLE_SUPPORT_FOR_WS-FEDERATION_PASSIVE_PROTOCOL = true
URL = "https://server/api" (Unique URL for this RP)
ADD_ONE_OR_MORE_IDENTIFIERS = eg. "urn:myInvestApi" and "https://server/api"
ACCEPT_REMAINING_DEFAULTS
SEND_LDAP_ATTRIBUTES_AS_CLAIMS = true
ATTRIBUTE_STORE = Active Directory
SELECT_USEFUL_ATTRIBUTES = User-Principal-Name; Email; Display-Name
https://sts.domain.com
(某些人使用
https://adfs.domain.com
,请询问您的服务器管理员)。但是,如果尝试从浏览器中执行此操作,则会得到
404 - Not found
并尝试在代码中检索 token ,因此ADAL库报告:
The browser based authentication dialog failed to complete. Reason: The server has not found anything matching the requested URI (Uniform Resource Identifier).
PassiveRequestorEndpoint
。 <Address>
-在我的情况下为https://sts.domain.com/adfs/ls/
。我不知道这将始终是该值,还是在设置ADFS时指定了该值,因此每个站点可能有所不同。 var stsEndpoint = "https://sts.domain.com/adfs/ls/";
var relyingPartyIdentifier = "urn:myInvestApi"; // Tenant in Azure AD speak, but this is an on-premise service
var authority = stsEndpoint + relyingPartyIdentifier;
var restResourceUrl = "https://server/api";
var redirectUri = "https://server/redirect-adfs.html";
const string CLIENT_ID = "26E54EC9-7988-4DAE-A527-483A8A78B1C6";
AuthenticationContext authenticationContext = new AuthenticationContext(authority, false);
var asyncRequest = authenticationContext.AcquireTokenAsync(restResourceUrl, CLIENT_ID, redirectUri, new PlatformParameters(PromptBehavior.Auto));
var accessToken = asyncRequest.Result.AccessToken;
关于c# - 如何设置有效的本地ADFS URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961921/
我是 ADFS 的新手。实际上我不知道什么是主动或被动联邦,也不知道它们之间的区别,有人可以帮助我吗? 提前致谢 !!!... 最佳答案 被动使用浏览器 - 进行重定向等。协议(protocol)是
我有一个引用 ADAL.net 库的 c# 控制台应用程序(Microsoft.IdentityModel.Clients.ActiveDirectory 版本 2.19.208020213) 控制台
ADF initContext 和 prepareModel 之间的区别,因为两者都通过执行业务服务来准备数据,并通过绑定(bind)容器(Map 对象)使其可用。 最佳答案 ADF initCont
我想从按钮 ActionListener 执行数据控制操作(CreateInsert 和 Delete)。我知道可以从 Data Controls 菜单中插入一个数据控制按钮,但是由于各种原因我需要这
我需要将现有管道的副本(管道数量:10-20)从一个订阅克隆到另一个订阅(另一个 ADF)。有没有办法使用 Azure DevOps 来完成此事件? 最佳答案 选项1: 使用Git Configura
在我的解决方案中,我有两个 Azure 数据工厂项目:PR1 和 PR2。 PR1 包含某些资源的定义 - “resource1”。在 PR2 中,我有管道定义,我想在其中引用此资源: "linked
我正在使用 inputFile 组件上传文件。当我完成上传文件时,输入文本字段将缩小 其大小并更改大小以调整文件名。有没有办法为输入文本字段设置固定大小? 部分代码如下: 最佳答案 例如,使用 Pa
我是 ORACLE ADF FUSION MIDDLEWARE 的新手,所以我在表单设计方面没有经验。谁能帮我对齐布局中的一些元素。 我想始终将 ORACLE Logo 对齐到右侧。如果窗口分辨率降低
我的页面上有一个 af:outputText。 它的值需要很长时间才能生成,所以我不想在最初创建页面时生成。 相反,我希望页面在加载后对服务器进行异步回调,然后返回值将填充 outputText。 在
在 oracle adf 中,当我们将一个表从 Data Controls 拖放到 jsf 页面时,当我们运行项目时,预选了一行表。我应该怎么做才能在第一次加载页面时没有选择任何行? 我使用 jdev
我在 Windows Server 2016 上使用 OpenID Connect 设置 ADFS 时遇到困难。 我已经设置了用于测试的 AD 并且我可以成功进行身份验证,但是电子邮件声明不在 id
ADF 管道和 ADF 数据流有什么区别?为什么管道和数据流中支持的接收器/源不同?是否可以创建一个管道来从源读取数据、过滤、使用连接并将数据存储到没有数据流的接收器?请告诉我。 最佳答案 管道用于流
我有一个具有三个值的 selectonechoice:A、B、C,但我在其更改事件中遇到以下错误: Could not find selected item matching value "B"
我有 ADF 应用程序,它是一个电影数据库。我在设置 ADF 组件 af:inputText 时遇到了一个大问题。 我尝试了很多不同组件的不同宽度设置,但我总是失败。 有图片... 请问您不知道该怎么
我试图显示(在控制台中打印)对应于 ADF-BC 的 SQL 查询。我不知道如何使用 Jdeveloper 11.1.1.1.0 和 Oracle 11g 执行此操作。我只是想看看在将它们发送到 Or
我有两台名为 auth.somedomain.no 的 ADFS 2.0 代理服务器和两台名为 adfs.somedomain.no 的 ADFS 2.0 服务器。 然而,https://auth.s
我正在尝试将新的 MVC 应用程序发布到 Azure 应用服务。该应用程序使用ADFS单点登录身份验证,我在ADFS服务器上添加了依赖方信任,并且在本地主机上测试时可以登录。 发布到我的应用程序服务并
有人成功做到这一点吗? SelfSTS是一个 WCF 应用程序而不是 ASP.NET 应用程序,并且似乎没有很多用于进行 WCF 集成的示例或代码示例? 这非常有用,因为 SelfSTS 允许您动态创
我试图将我的 Identityserver4 配置为使用 ADFS 4.0 作为外部提供程序。 我已将其配置如下: app.UseCookieAuthentication(ne
我需要使用“-Djbo.debugoutput=console”启动我的 adf 应用程序。 我该怎么做?我使用的是jdevloper 11.1.1.6 最佳答案 您需要做的就是将上述字符串作为 Ja
我是一名优秀的程序员,十分优秀!