2016-08-30 82 views
1

我使用ASP.NET Core成功設置IdentityServer4。如何配置IdentityServerAuthenticationOptions.Authority以使用通配符

作爲默認的配置我有這樣的:

IdentityServerAuthenticationOptions options = new IdentityServerAuthenticationOptions() 
{ 
    Authority = "http://localhost:5000",     
    ScopeName = "scope", 
    ScopeSecret = "ScopeSecret", 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
    RequireHttpsMetadata = false,     
}; 

現在,使用這個guide我配置爲從配置文件中讀取,所以他們可以在生產的任何數字。

例如,如果我將API設置爲在http://*:5000上運行,則客戶端可以通過服務IP地址(如http://192.168.1.100:5000)連接到它。

一旦客戶端獲取承載令牌,並嘗試使用它,一個Internal Server Error occures與此異常:

Unable to obtain configuration from: 
'http://*:5000/.well-known/openid-configuration'. 
---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'http://*:5000/.well-known/openid-configuration'. 
---> System.UriFormatException: Invalid URI: The hostname could not be parsed. 

什麼是配置IdS4擁有動態權限正確的方法是什麼?

更新

看來問題是發行人,對此有什麼想法?

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidIssuerException: 

IDX10205: Issuer validation failed. Issuer: 'http://192.168.1.100:5000'. Did not match: validationParameters.ValidIssuer: 'http://localhost:5000' or validationParameters.ValidIssuers: 'null'. 

    at Microsoft.IdentityModel.Tokens.Validators.ValidateIssuer(String issuer, SecurityToken securityToken, TokenValidationParameters validationParameters) 

回答

2

通過一個巨大的驚喜,我所需要的,是爲IssuerUri設定的值(幾乎所有的值):

public IServiceProvider ConfigureServices(IServiceCollection services) 
{ 
    ////... 

    var identiyBuilder = services.AddIdentityServer(options => 
    { 
     options.RequireSsl = false; 
     options.IssuerUri = "MyCompany";  
    }); 

    ////... 
} 

現在,通過以上的配置,我可以用任何使用該服務IP地址。

0

我沒有找到我只是把MyCompany

但在我的日誌文件,我有以下幾點:

Bearer was not authenticated. Failure message: IDX10205: Issuer validation failed. Issuer: 'https://crm.example.com'. Did not match: validationParameters.ValidIssuer: 'MyCompany' or validationParameters.ValidIssuers: 'null'. 

我不太知道什麼是「發行人」的意思,但我能夠只採取'https://crm.example.com'並得到與此相關的東西:

options.IssuerUri = "https://crm.example.com";