如果您的自託管應用程序可以引用System.Web
,那麼您可以使用與Microsoft.Owin.Host.SystemWeb
相同的MachineKey實現。
將configuration/system.web/machineKey
設置放入您的App.config中,就像它在Web.config中一樣。
參考參考System.Web
並添加以下類:
public class MachineKeyDataProtector : IDataProtector
{
private readonly string[] purposes;
public MachineKeyDataProtector(params string[] purposes)
{
this.purposes = purposes;
}
public byte[] Protect(byte[] userData)
{
return MachineKey.Protect(userData, this.purposes);
}
public byte[] Unprotect(byte[] protectedData)
{
return MachineKey.Unprotect(protectedData, this.purposes);
}
}
使用該類然後設置您的身份驗證選項:
var authenticationOptions = new OAuthBearerAuthenticationOptions
{
AccessTokenFormat = new TicketDataFormat(new MachineKeyDataProtector(
typeof(OAuthBearerAuthenticationMiddleware).Namespace, "Access_Token", "v1")),
AccessTokenProvider = new AuthenticationTokenProvider(),
};
如何只手動設置你的應用程序配置文件本機鍵?它在傳統的Web角色中運行得非常好,也不會對工作者角色產生任何問題。我重複 - 在配置中手動設置密鑰,不要依靠自動配置! – astaykov
感謝您的回答,但App.config不支持設置機器設置爲Web.config ... –
和什麼阻止你有'system.web \ machineKey'部分在你的app.config文件?你在回答之前嘗試過嗎? – astaykov