为开发和测试环境设置ADFS Redirect Uri

时间:2017-04-25 16:48:45

标签: .net oauth-2.0 adfs bearer-token

我有一个运行的ADFS服务器(3.0)和一个带有请求的api,这些请求通过ADFS服务器提供的承载令牌进行身份验证。作为使用ADFS授权的请求的一部分,我必须指定重定向uri:

https://MyAdfsServer.com/adfs/oauth2/authorize?response_type=code&client_id=my-client-id&resource=https://my-web-api.com&redirect_uri=https://my-redirect-uri.com

这适用于生产环境,但对于开发和测试环境,我不想通过adfs进行身份验证(如果我不需要)

有没有办法实现这个目标?我不想为每个环境创建多个adfs客户端,只是为了拥有单独的重定向uris。对于本地的其他开发人员,他们可能会在我可能正在使用https://localhost/my-app的不同位置设置该网站,但另一位开发人员正在使用https://localhost/workspace2/my-app等。

我是否可以忽略在开发和测试环境中不得不去ADFS获取承载令牌,或者在没有多个adfs客户端的情况下使用单独的重定向uris?

由于

1 个答案:

答案 0 :(得分:0)

为了将来参考,我遇到了类似的问题。我最终做的就是,在web.config和web.config转换之间切换

<authentication mode="Windows" />

和 对于web.config转换,<authentication mode="None" /><authentication mode="Windows" xdt:Transform="Replace" /> 取决于环境所需的配置

然后快速检查启动文件

        public void ConfigureAuth(IAppBuilder app)
        {
            if (AuthenticationMode == System.Web.Configuration.AuthenticationMode.Windows)
            {
                return;
            }
          //rest of your authentication logic
         } 



private static System.Web.Configuration.AuthenticationMode AuthenticationMode
        {
            get
            {
                // gets a config file from the root of the system
                var configuration = WebConfigurationManager.OpenWebConfiguration("~");

                // gets the web.config part related with authentication
                var authenticationSection = (AuthenticationSection)configuration.GetSection("system.web/authentication");
                return authenticationSection.Mode;
            }
        }

通过这种方式,我能够在不同环境(test / staging / prod)中的身份验证类型之间进行无缝切换。