Previously, it was fairly easy to set the default cache to MSLSA:,
which is not collection-enabled (as opposed to the normal default
of API:, which is), and the non-collection behavior proved confusing
to many users.
Ideally there would be an option to choose the output ccache in
the "Get Ticket" window, but that is more complicated to implement
than just a display of what cache a given ticket is in. This
extra display column should still help to alleviate user confusion.
(cherry picked from commit
b26d25e97cf3c53ef896092c71948011ceac645d)
ticket: 8207
version_fixed: 1.13.3
status: resolved
MENUITEM "&Valid Until", ID_VALID_UNTIL
MENUITEM "&Encryption Type", ID_ENCRYPTION_TYPE
MENUITEM "&Flags", ID_SHOW_TICKET_FLAGS
+ MENUITEM "&Credential Cache Name", ID_CCACHE_NAME
END
POPUP "&Options"
BEGIN
ID_FORGET_PRINCIPALS "Clear the Principal history. This only affects autocompletion in the Get Tickets and Change Password dialogs.\n Forget Principals"
ID_ENCRYPTION_TYPE "Display column showing the encryption type for your tickets and session keys.\n Encryption Type"
ID_VALID_UNTIL "Display column showing when your tickets will expire.\n Valid Until"
+ ID_CCACHE_NAME "Display column showing the name of the credential cache containing this ticket.\n Cache Name"
END
STRINGTABLE
SendMessage(mainwin, WM_COMMAND, MAKEWPARAM(ID_SHOW_TICKET_FLAGS,
1), 0);
break;
+ case cmdCcacheNameCheckBox:
+ SendMessage(mainwin, WM_COMMAND, MAKEWPARAM(ID_CCACHE_NAME, 1), 0);
+ break;
case cmdAutoRenewCheckBox:
SendMessage(mainwin, WM_COMMAND, MAKEWPARAM(ID_AUTO_RENEW, 1), 0);
break;
return RegKeyToProperty("Encryption Type", false, newValue);
case cmdFlagsCheckBox:
return RegKeyToProperty("Flags", false, newValue);
+ case cmdCcacheNameCheckBox:
+ return RegKeyToProperty("Credential Cache", false, newValue);
case cmdAutoRenewCheckBox:
return RegKeyToProperty("AutoRenewTickets", true, newValue);
case cmdExpireAlarmCheckBox:
ON_COMMAND(ID_RENEWABLE_UNTIL, OnRenewableUntil)
ON_COMMAND(ID_SHOW_TICKET_FLAGS, OnShowTicketFlags)
ON_COMMAND(ID_ENCRYPTION_TYPE, OnEncryptionType)
+ ON_COMMAND(ID_CCACHE_NAME, OnCcacheName)
ON_UPDATE_COMMAND_UI(ID_TIME_ISSUED, OnUpdateTimeIssued)
ON_UPDATE_COMMAND_UI(ID_VALID_UNTIL, OnUpdateValidUntil)
ON_UPDATE_COMMAND_UI(ID_RENEWABLE_UNTIL, OnUpdateRenewableUntil)
ON_UPDATE_COMMAND_UI(ID_SHOW_TICKET_FLAGS, OnUpdateShowTicketFlags)
ON_UPDATE_COMMAND_UI(ID_ENCRYPTION_TYPE, OnUpdateEncryptionType)
+ ON_UPDATE_COMMAND_UI(ID_CCACHE_NAME, OnUpdateCcacheName)
ON_COMMAND(ID_UPPERCASE_REALM, OnUppercaseRealm)
ON_COMMAND(ID_KILL_TIX_ONEXIT, OnKillTixOnExit)
ON_UPDATE_COMMAND_UI(ID_UPPERCASE_REALM, OnUpdateUppercaseRealm)
{"Valid Until", true, ID_VALID_UNTIL, 100}, // VALID_UNTIL
{"Encryption Type", false, ID_ENCRYPTION_TYPE, 100}, // ENCRYPTION_TYPE
{"Flags", false, ID_SHOW_TICKET_FLAGS, 100}, // TICKET_FLAGS
+ {"Credential Cache", false, ID_CCACHE_NAME, 105}, // CACHE_NAME
};
static struct TicketFlag {
long valid_until,
long renew_until,
char *encTypes,
- unsigned long flags)
+ unsigned long flags,
+ char *ccache_name)
{
TCHAR* localTimeStr=NULL;
TCHAR* durationStr=NULL;
krb5TicketFlagsToString(flags, &flagsStr);
list.SetItemText(iItem, iSubItem++, flagsStr);
}
+ if (sm_viewColumns[CACHE_NAME].m_enabled) {
+ list.SetItemText(iItem, iSubItem++, ccache_name);
+ }
if (flagsStr)
free(flagsStr);
if (localTimeStr)
principal->valid_until,
principal->renew_until,
"",
- principal->flags);
+ principal->flags,
+ principal->ccache_name);
if (elem->m_expanded) {
for (tempList = principal->ticket_list;
tempList != NULL;
tempList->valid_until,
tempList->renew_until,
tempList->encTypes,
- tempList->flags);
+ tempList->flags,
+ principal->ccache_name);
}
}
if ((elem->m_focus >= 0) &&
pCmdUI->SetCheck(sm_viewColumns[ENCRYPTION_TYPE].m_enabled);
}
+VOID CLeashView::OnCcacheName()
+{
+ ToggleViewColumn(CACHE_NAME);
+}
+
+VOID CLeashView::OnUpdateCcacheName(CCmdUI *pCmdUI)
+{
+ pCmdUI->SetCheck(sm_viewColumns[CACHE_NAME].m_enabled);
+}
+
VOID CLeashView::OnLargeIcons()
{
INT x, y, n;
VALID_UNTIL,
ENCRYPTION_TYPE,
TICKET_FLAGS,
+ CACHE_NAME,
NUM_VIEW_COLUMNS
};
long valid_until,
long renew_until,
char *encTypes,
- unsigned long flags);
+ unsigned long flags,
+ char *cache_name);
void SetTrayIcon(int nim, int state=0);
void SetTrayText(int nim, CString tip);
afx_msg VOID OnRenewableUntil();
afx_msg VOID OnShowTicketFlags();
afx_msg VOID OnEncryptionType();
+ afx_msg VOID OnCcacheName();
afx_msg VOID OnUppercaseRealm();
afx_msg VOID OnKillTixOnExit();
afx_msg VOID OnDestroy();
afx_msg VOID OnUpdateRenewableUntil(CCmdUI* pCmdUI);
afx_msg VOID OnUpdateShowTicketFlags(CCmdUI* pCmdUI);
afx_msg VOID OnUpdateEncryptionType(CCmdUI* pCmdUI);
+ afx_msg VOID OnUpdateCcacheName(CCmdUI* pCmdUI);
afx_msg VOID OnUpdateUppercaseRealm(CCmdUI* pCmdUI);
afx_msg VOID OnUpdateKillTixOnExit(CCmdUI* pCmdUI);
afx_msg VOID OnUpdateLowTicketAlarm(CCmdUI* pCmdUI);
<Command Name="cmdFlagsCheckBox"
LabelTitle="Flags"
Keytip="F" />
+ <Command Name="cmdCcacheNameCheckBox"
+ LabelTitle="Credential Cache Name"
+ Keytip="N" />
<Command Name="cmdAutoRenewCheckBox"
LabelTitle="Automatic Ticket Renewal"
Keytip="R" />
<CheckBox CommandName="cmdValidUntilCheckBox" />
<CheckBox CommandName="cmdEncTypeCheckBox" />
<CheckBox CommandName="cmdFlagsCheckBox" />
+ <CheckBox CommandName="cmdCcacheNameCheckBox" />
</Group>
<Group CommandName="cmdTicketOptionsGroup" >
<CheckBox CommandName="cmdAutoRenewCheckBox" />
#define ID_EXPORT_TICKET 32837
#define ID_AUTO_IMPORT_TICKET 32838
#define ID_AUTO_IMPORT_TICKETS 32840
+#define ID_CCACHE_NAME 32841
// Next default values for new objects
//