人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

BASIC認証をログインしたいのですが、認証ダイアログが出てきて、自動ログインできません。BASIC認証ではないのでしょうか?以下はEXCEL VBAからやってます。認証ダイアログが出てくるのはなぜでしょうか?

Sub bbbb()
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
Const strURL = "https://ibox"
Const strHEAD = "Authorization: Basic amQ== " & vbCrLf
objIE.navigate2 strURL, , , , strHEAD
Do While objIE.Busy = True
DoEvents
Loop
End Sub

●質問者: shotomo
●カテゴリ:コンピュータ
✍キーワード:application AS BASIC BASIC認証 const
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● HALSPECIAL
●100ポイント ベストアンサー

※ヘッダにベーシック認証の情報を乗せるような方法はわからないのですが、以下のようなやり方はいかがでしょうか?


私の紹介する方法は、URLにユーザー、パスワードを埋め込んで、ベーシック認証のページにアクセスする方法です。

ただし、

http://support.microsoft.com/kb/834489/ja

Internet Explorer では Web サイト アドレス (HTTP URL および HTTPS URL) に含まれるユーザー名およびパスワードがサポートされない

というセキュリティ上の都合があるため、ちょっと工夫が必要です。

(昔は可だったのですが、ある日セキュリティパッチで突然駄目になったんですw)


Option Explicit

'IEでベーシック認証を突破するには、セキュリティを落とす必要がある。(レジストリの修正)
Const REG_PATH = "HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE\"
Const IE = "iexplore.exe"
Dim defaultFlag



Sub bbbb()

  'まずセキュリティ設定を解除
 Call BasicAuthSecurity(False)

 Dim objIE As Object
 Set objIE = CreateObject("InternetExplorer.application")
 objIE.Visible = True
 Const URL = "https://{0}:{1}@ibox"  'ユーザ、パスワードを埋めたこういう形式で送るのだ。
 Dim strURL
 strURL = URL
 strURL = Replace(strURL,"{0}","ユーザ名")
 strURL = Replace(strURL,"{1}","パスワード名")
 objIE.navigate2 strURL  'navigate2なのかnavigateなのかは知らないです
 Do While objIE.Busy = True
 DoEvents
 Loop

  'セキュリティ設定を戻す
 Call BasicAuthSecurity(True)

End


Function BasicAuthSecurity(flag)
 Dim WshShell, regValue
 Set WshShell = CreateObject("WScript.Shell")
 If flag = False Then
  'レジストリに設定が無い場合は作成
 On Error Resume Next
 regValue = WshShell.RegRead( REG_PATH & IE )
 If Err.Number = 0 Then
 If regValue = 1 Then
 WshShell.RegWrite REG_PATH & IE, 0, "REG_DWORD"  'セキュリティ解除
 End If
 defaultFlag = regValue
 Else
 WshShell.RegWrite REG_PATH & IE, 0, "REG_DWORD"  'セキュリティ解除
 defaultFlag = 1
 End If
 On Error Goto 0

 Else
 If defaultFlag = 1 Then
 WshShell.RegWrite REG_PATH & IE, 1, "REG_DWORD"  'セキュリティ設定
 End If
 End If
 Set WshShell = Nothing
End Function

参考になりますか?

(動作未確認です^^;)


2 ● t-wata
●40ポイント

Authorizationヘッダには、ユーザー名とパスワードを「:」で区切ってBase64でエンコードした値を指定します。

http://x68000.q-e-d.net/~68user/net/http-auth-1.html

「amQ==」はデコードすると「jd」となって、ユーザー名とパスワードの区切りである「:」自体が含まれないです。

まずは正しい認証情報を設定して試してみては?

◎質問者からの返答

すみません。ここに載せるのに途中を消してしまいました。

Base64でエンコードホームページでエンコードはしました。

不明なことをしてすみませんでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ