gpt4 book ai didi

azure - 添加变量以回复 Azure B2C 中的 URL

转载 作者:行者123 更新时间:2023-12-02 06:21:39 25 4
gpt4 key购买 nike

我正在尝试在Azure B2C中设置redirect_uri。我的 URL 中有一个语言字段,如下所示:

https://mydomain/de-de/projects
https://mydomain/en-us/projects
https://mydomain/sv-se/projects
https://mydomain/ar-sa/projects
...

为了正确重定向,我必须将所有可能性添加到 B2C 回复 URL,并且最多只能添加 20 个。

有没有办法向redirect_uri添加变量?类似于:

https://mydomain/:lang/projects

其中“:lang”是一个可以取任何值的变量。 enter image description here

//////////////////////////////////////

解决方案

棘手的解决方案是操纵状态并使用返回的 URL 注入(inject)它,因为它会在登录/注册响应后发送回来。 createLoginUrl() 方法:

let url = that.loginUrl
+ '?response_type='
+ response_type
+ '&client_id='
+ encodeURIComponent(that.clientId)
+ '&state='
+ encodeURIComponent((state) + 'url' + returnedUrl)
+ '&redirect_uri='
+ encodeURIComponent(window.location.origin)
+ '&scope='
+ encodeURIComponent(that.scope);

所以在这里我用“url”一词分割状态,这样我就可以在响应到来后再次阅读它。

encodeURIComponent((state) + 'url' + returnedUrl)

一个重要的细节redirect_uri,它应该是同源的:

'&redirect_uri=' + encodeURIComponent(window.location.origin)

并且此 URL 应添加到 Azure B2C 应用程序中返回的 URL 中。

现在我可以在 tryLogin() 方法中再次拆分它:

const statePartsWithUrl = (parts['state'] + '').split('url');
window.location.href = statePartsWithUrl[1];

而且效果非常好。

////------------------------------------------------

编辑:2019 年 2 月 1 日

const statePartsWithUrl = (parts['state'] + '').split('url');
let state = '';
let returnedUrl = '';
if (statePartsWithUrl != null) {
state = statePartsWithUrl[0];
returnedUrl = statePartsWithUrl[1];
}

这里是状​​态的分割,以便在方法 tryLogin(options) 中从中读取信息

最佳答案

是的,正如您所发现的,您目前无法在 B2C 中的回复网址中添加通配符。

这可能是由于 OAuth 2.0 Threat Model and Security Considerations RFC 中定义的安全问题造成的。其中,针对开放重定向攻击的建议对策是让客户端注册完整的重定向 URI。

也无法以编程方式创建应用程序:https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/19975480-programmatically-register-b2c-applications .

遗憾的是,手动方式是目前唯一的方式。但请务必在“用户之声”上对功能请求投赞成票。

实际上,我什至尝试通过 Graph Explorer 手动编辑应用程序:

{
"odata.error": {
"code": "Request_BadRequest",
"message": {
"lang": "en",
"value": "Updates to converged applications are not allowed in this version."
},
"date": "2018-01-08T12:00:00",
"requestId": "208e7159-d459-42ec-8bb7-000000000000",
"values": null
}
}

正如您在评论中建议的那样,解决此问题的一种方法是使用单个静态重定向 URI 并将语言/文化保留在状态/cookie 中,然后重定向到特定于语言的版本用户返回应用程序后。

关于azure - 添加变量以回复 Azure B2C 中的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48153427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com