質問: ### 前提 ↑のページを参考にしてS3にBasic認証を導入しました。 以下のことが出来ることを確認済みです。 * CloudFrontのアドレスからアクセスするとBasic認証がかかっている。 * 上記認証に合格すると、CloudFront側からページを閲覧できる。 * S3のアドレスからアクセスするとアクセス拒否になる。 ここにClickOnceを配置しました。こちらについては以下を確認しています。 * S3へのアクセスを許可し、S3のアドレスからアクセスするとClickOnceアプリケーションを実行できる。 * S3のアクセスをブロックし、CloudFront側からアクセスしようとすると、401エラーが発生する。 ### 発生している問題・エラーメッセージ ``` プラットフォームのバージョン情報 Windows : 10.0.17134.0 (Win32NT) Common Language Runtime : 4.0.30319.42000 System.Deployment.dll : 4.7.3056.0 built by: NET472REL1 clr.dll : 4.7.3362.0 built by: NET472REL1LAST_C dfdll.dll : 4.7.3056.0 built by: NET472REL1 dfshim.dll : 10.0.17134.1 (WinBuild.160101.0800) ソース 配置の URL : https://******.cloudfront.net/WpfApp1.application エラーの概要 以下はエラーの概要です。これらのエラーの詳細はログに一覧表示されています。 * https://******.cloudfront.net/WpfApp1.application のライセンス認証により例外が発生しました。 次の失敗メッセージが検出されました: + https://******.cloudfront.net/WpfApp1.application のダウンロードに失敗しました。 + リモート サーバーがエラーを返しました: (401) 許可されていません コンポーネント ストア トランザクションの失敗の概要 トランザクション エラーは検出されませんでした。 警告 この操作中に警告は発生しませんでした。 操作の進行状況 * [2019/05/16 14:19:09] : https://******.cloudfront.net/WpfApp1.application のライセンス認証が開始されました。 エラーの詳細 この操作中に次のエラーが検出されました。 * [2019/05/16 14:19:09] System.Deployment.Application.DeploymentDownloadException (不明な subtype) - https://******.cloudfront.net/WpfApp1.application のダウンロードに失敗しました。 - ソース:System.Deployment - スタック トレース: 場所 System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) 場所 System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() 場所 System.Deployment.Application.FileDownloader.Download(SubscriptionState subState, X509Certificate2 clientCertificate) 場所 System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 場所 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 場所 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) 場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl, Uri& deploymentUri) 場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 場所 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) --- 内部例外 --- System.Net.WebException - リモート サーバーがエラーを返しました: (401) 許可されていません - ソース:System - スタック トレース: 場所 System.Net.HttpWebRequest.GetResponse() 場所 System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) コンポーネント ストア トランザクションの詳細 トランザクション情報はありません。 ``` ### 補足情報 * ユーザー認証と、ClickOnceは必ず併用したいです。 * 認証はBasic認証である必要はありません。
回答: ClickOnceは、統合Windows認証(Integrated Windows Authentication)のみサポートで、BASIC認証やダイジェスト認証は使えないようです。 Microsoft Docs - Server and client configuration issues in ClickOnce deployments 上記の「ClickOnce and proxy authentication」の章ではプロキシーサーバーを介した場合の認証について述べていますが、以下のMSDNフォーラムのやり取りを読むと、プロキシーに限った話でもなさそうです。2006年とずいぶん古いスレッドですが、ClickOnce自体の進化が停まっている気もするので、その辺の事情は変わっていないかと思われます。 ClickOnce and Integrated Windows Authentication