[英]Refresh Office365 Authorization Token from Javascript
我的一個應用目前存在問題。
問題是用戶可以在輸入任何數據之前使頁面長時間保持打開狀態,因此,偶爾,當他們輸入數據並單擊“提交”按鈕時,他們將重定向到o365進行身份驗證,因此會丟失輸入的數據。
我擁有適用於該應用程序的所有標准身份驗證。 但是,我相信要執行此操作,單擊提交按鈕時,我需要在javascript中獲取刷新的令牌,並將此令牌發送到api方法以進行訪問。
這可能嗎,有人知道該怎么做嗎?
它是一個使用Owin O365安全性和Microsoft Azure AD的MVC ASP.NET應用程序。
我不確定這里有什么信息或代碼片段有用,所以如果我能提供什么,請詢問。
我發現了使用角度獲取令牌等的多個示例,但是,這不是SPA,也不使用角度。
提前謝謝了。
更新
我嘗試使用以下代碼使用ADAL JS檢索令牌,但它似乎無法識別AuthorizationContext(config)調用:
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.0/js/adal.min.js"></script>
$('#btnSubmit').on('click', function (e) {
e.preventDefault();
CheckUserAuthorised();
});
function CheckUserAuthorised() {
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: '##################',
clientId: '###################',
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage'
};
var authContext = new AuthorizationContext(config); //THIS LINE FAILS
var user = authContext.getCachedUser();
if (!user) {
alert("User Not Authorised");
authContext.login();
}
else {
alert('User Authorized');
}
}
這在控制台中產生以下錯誤:
'AuthorizationContext' is undefined
更新
我沒有通過未定義的錯誤。 這是因為我正在調用AuthorizationContext
而不是AuthenticationContext
。 小學生錯誤。 但是現在,每當我檢查上下文的用戶屬性時,它始終為null。 而且我不知道解決此問題的方法,因為上下文是在頁面加載時初始化的。
我在網上發現了一個類似的示例 ,您的問題似乎與您要實例化的對象有關。
代替
new AuthorizationContext(window.config);
嘗試
new AuthenticationContext(window.config);
該代碼運行得很好,表明用戶未通過身份驗證。
您的代碼中缺少一個步驟,這是一個簡單的代碼示例,希望對您有所幫助:
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.10/js/adal.min.js"></script>
<body>
<a href="#" onclick="login();">login</a>
<a href="#" onclick="getToken()">access token</a>
<a href="#" onclick="getUser()">get user</a>
</body>
<script type="text/javascript">
var configOptions = {
tenant: "<tenant_id>", // Optional by default, it sends common
clientId: "<client_id>",
postLogoutRedirectUri: window.location.origin,
}
window.authContext = new AuthenticationContext(configOptions);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
function getToken(){
authContext.acquireToken("https://graph.microsoft.com",function(error, token){
console.log(error);
console.log(token);
})
}
function login(){
authContext.login();
}
function getUser(){
var user = authContext.getCachedUser();
console.log(user);
}
</script>
該代碼示例來自帶有Microsoft Online Auth的No'Access-Control-Allow-Origin'標頭的答案。 問題是不同的,但是它們在相同的情況下。
如有任何其他疑問,請隨時告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.